C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#のデータ型とは?値型・参照型・ポインタ型の違いを徹底解説

C#のデータ型は、大きく分けて「値型(Value Type)」「参照型(Reference Type)」「ポインタ型(Pointer Type)」の3種類に分類されます。それぞれの仕組みと使い分けを理解することは、C#プログラミングの基礎として非常に重要です。本記事では、各データ型の特徴を一覧表付きでわかりやすく解説します。

値型(Value Types)

値型の変数には、データそのものが直接代入されます。すべての値型は System.ValueType クラスから派生しており、変数を別の変数に代入すると値がコピーされるため、元の変数には影響しません。

C#で利用できる主な値型は以下のとおりです。

説明範囲既定値
boolブール値true または falsefalse
byte8ビット符号なし整数0 ~ 2550
char16ビットUnicode文字U+0000 ~ U+FFFF'\0'
decimal有効桁数28~29桁の128ビット高精度10進数(-7.9 × 10^28 ~ 7.9 × 10^28) / 10^0 ~ 280.0M
double64ビット倍精度浮動小数点数±5.0 × 10^-324 ~ ±1.7 × 10^3080.0D
float32ビット単精度浮動小数点数-3.4 × 10^38 ~ +3.4 × 10^380.0F
int32ビット符号付き整数-2,147,483,648 ~ 2,147,483,6470
long64ビット符号付き整数-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8070L
sbyte8ビット符号付き整数-128 ~ 1270
short16ビット符号付き整数-32,768 ~ 32,7670
uint32ビット符号なし整数0 ~ 4,294,967,2950
ulong64ビット符号なし整数0 ~ 18,446,744,073,709,551,6150
ushort16ビット符号なし整数0 ~ 65,5350

参照型(Reference Types)

参照型の変数には、実際のデータ自体ではなく、データへの参照(メモリ上のアドレス)が格納されます。変数を代入すると参照がコピーされるため、複数の変数が同じオブジェクトを共有することになります。C#の主な参照型は以下のとおりです。

object型

object型は、C#の共通型システム(CTS:Common Type System)におけるすべてのデータ型の最終的な基底クラスです。任意の型の値をobject型の変数に代入できます。

dynamic型

dynamic型の変数には、任意の型の値を格納できます。最大の特徴は、型チェックがコンパイル時ではなく実行時に行われる点です。柔軟なコードが書ける一方、実行時エラーのリスクがあるため注意が必要です。

string型

string型を使うと、変数に任意の文字列を代入できます。string型は System.String クラスのエイリアス(別名)であり、一度作成した文字列は変更できない不変(イミュータブル)な特性を持ちます。

ポインタ型(Pointer Types)

ポインタ型は、メモリ上のアドレスを直接格納する特殊な型です。unsafe キーワードを指定したコードブロック内でのみ使用でき、パフォーマンスが重視される低レベル処理など限られた場面で使われます。通常のアプリケーション開発では、値型と参照型を理解していれば十分です。

  1. C言語の基本データ型を徹底解説!int・char・floatの種類とサイズ一覧

    C言語の基本データ型とは? C言語のコンパイラがサポートする基本データ型は、大きく分けて次の4つです。 整数型(Integer) 文字型(Character) 浮動小数点型(Floating-point) 倍精度浮動小数点型(Double precision floating point) プログラムで扱う値の種類(整数・文字・実数など)に応じて適切な型を選ぶことは、正確で効率的なコードを書くための第一歩です。なお、各データ型のサイズや表現できる値の範囲は、使用するコンパイラや実行環境によって異なる場合がある点に注意してください。 整数型(Integral Data Type) 整数型は

  2. C#の値型と参照型の違いを徹底解説!メモリの仕組みとサンプルコードで比較

    C#におけるすべての型は、大きく分けて「値型」と「参照型」という2つのカテゴリに分類されます。この2つの違いを正しく理解することは、バグの防止やパフォーマンスの最適化において非常に重要です。本記事では、それぞれの型の特徴、動作の仕組み、そして実際のコード例を使った挙動の違いについて詳しく解説します。 値型とは 値型の変数は、データそのものを直接保持します。各変数が独自のデータコピーを持つため、ある変数の値を変更しても、別の変数やオブジェクトには一切影響しません。 C#における値型には、以下のようなものがあります。 int、float、double などのすべての数値型 char 型および b