値型 (C# リファレンス)

値型は、次の 2 つの主要カテゴリで構成されます。

構造体は、次のカテゴリに分類されます。

値型の主な機能

値型に基づく変数は、値を直接含みます。 ある値型の変数を別の変数に代入すると、含まれている値がコピーされます。 これは参照型の変数の代入とは異なります。参照型の変数の代入では、オブジェクト自体ではなく、オブジェクトへの参照がコピーされます。

すべての値型は、ValueType から暗黙的に派生します。

参照型とは異なり、値型から新しい型を派生させることができません。 ただし、参照型と同様に、struct 型はインターフェイスを実装できます。

参照型とは異なり、値型には null 値を含めることはできません。 ただし、[Null 許容型] の機能は、値型が nullに割り当てることができます。

それぞれの値型には、その型の既定値を初期化する既定のコンストラクターが暗黙的に存在します。 値型の既定値の詳細については、「既定値の一覧表」を参照してください。

単純型の主な機能

C# 言語に不可欠なすべての単純型は、.NET Framework System 型のエイリアスです。 たとえば、intInt32 のエイリアスです。 すべてのエイリアスの一覧については、「組み込み型の一覧表 (C# リファレンス)」を参照してください。

定数式のオペランドがすべて単純型の定数である場合、定数式はコンパイル時に評価されます。

単純型は、リテラルを使用して初期化できます。 たとえば、'A' は char 型のリテラルであり、2001 は int 型のリテラルです。

値型の初期化

C# のローカル変数は、使用する前に初期化する必要があります。 たとえば、次の例のように、初期化せずにローカル変数を宣言するとします。

int myInt;

この変数は、初期化した後でないと使用できません。 初期化するには、次のステートメントを使用します。

myInt = new int();  // Invoke default constructor for int type.

このステートメントは、次のステートメントと同等です。

myInt = 0;         // Assign an initial value, 0 in this example.

次の例のように、宣言と初期化を 1 つのステートメントで行うことができます。

int myInt = new int();

または

int myInt = 0;

new 演算子を使用すると、それぞれの型の既定のコンストラクターが呼び出され、既定値が変数に代入されます。 前の例では、既定のコンストラクターが myInt に値 0 を代入します。 既定のコンストラクターによる値の代入の詳細については、「既定値の一覧表」を参照してください。

ユーザー定義型の場合は、new を使用して既定のコンストラクターを呼び出します。 たとえば、Point struct の既定のコンストラクターを呼び出すステートメントは、次のとおりです。

Point p = new Point(); // Invoke default constructor for the struct.

既定のコンストラクターが呼び出されると、struct は明示的に代入するものと見なされ、すべてのメンバーがそれぞれの既定値に初期化されます。

new 演算子の詳細については、「new」を参照してください。

数値型の出力書式の詳細については、「数値結果の書式指定の一覧表」を参照してください。

参照

関連項目

C# のキーワード

参照型 (C# リファレンス)

概念

C# プログラミング ガイド

その他の技術情報

C# リファレンス

型 (C# リファレンス)

型のリファレンス表 (C# リファレンス)