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

2 種類の値型があります。There are two kinds of value types:

値型の主な機能Main features of value types

値型の変数には、その型の値が含まれています。A variable of a value type contains a value of the type. たとえば、int 型の変数には値 42 が含まれている可能性があります。For example, a variable of the int type might contain the value 42. これは、オブジェクトとも呼ばれる型のインスタンスへの参照を含む参照型の変数とは異なります。This differs from a variable of a reference type, which contains a reference to an instance of the type, also known as an object. 値型の変数に新しい値を割り当てると、その値はコピーされます。When you assign a new value to a variable of a value type, that value is copied. 参照型の変数に新しい値を割り当てると、オブジェクト自体ではなく参照がコピーされます。When you assign a new value to a variable of a reference type, the reference is copied, not the object itself.

すべての値型が System.ValueType から暗黙的に派生されます。All value types are derived implicitly from the System.ValueType.

参照型とは異なり、値型から新しい型を派生することはできません。Unlike with reference types, you cannot derive a new type from a value type. ただし、参照型の場合と同様に、構造体はインターフェイスを実装できます。However, like reference types, structs can implement interfaces.

値型の変数は既定で null にすることはできません。Value type variables cannot be null by default. ただし、対応する null 許容型の変数を null にすることはできます。However, variables of the corresponding nullable types can be null.

各値型には、その型の既定値を初期化する暗黙のパラメーターなしのコンストラクターがあります。Each value type has an implicit parameterless constructor that initializes the default value of that type. 値型の既定値の詳細については、「既定値の一覧表」を参照してください。For information about default values of value types, see Default values table.

単純型Simple types

単純型は、C# に用意されている定義済みの構造体型のセットであり、次の型を構成します。The simple types are a set of predefined struct types provided by C# and comprise the following types:

単純型はキーワードで識別されますが、これらのキーワードは、System 名前空間に事前に定義されている構造体型の単なるエイリアスです。The simple types are identified through keywords, but these keywords are simply aliases for predefined struct types in the System namespace. たとえば、intSystem.Int32 のエイリアスです。For example, int is an alias of System.Int32. エイリアスの完全な一覧については、「組み込み型の一覧表」を参照してください。For a complete list of aliases, see Built-in types table.

単純型は、ある追加の操作を許可している点で、他の構造体型とは異なります。The simple types differ from other struct types in that they permit certain additional operations:

  • 単純型はリテラルを使用して初期化できます。Simple types can be initialized by using literals. たとえば、'A'char 型のリテラルで、2001int 型のリテラルです。For example, 'A' is a literal of the type char and 2001 is a literal of the type int.

  • 単純型の定数は、const キーワードを使用して宣言できます。You can declare constants of the simple types with the const keyword. 他の構造体型の定数を持つことはできません。It's not possible to have constants of other struct types.

  • オペランドがすべて単純型の定数式は、コンパイル時に評価されます。Constant expressions, whose operands are all simple type constants, are evaluated at compile time.

詳細については、「C# 言語仕様」の単純型に関するセクションを参照してください。For more information, see the Simple types section of the C# language specification.

値型の初期化Initializing value types

C# では、ローカル変数を使用する前に初期化する必要があります。Local variables in C# must be initialized before they are used. たとえば、次の例のように、初期化せずにローカル変数を宣言した場合、For example, you might declare a local variable without initialization as in the following example:

int myInt;

初期化してからでないとこれを使用することはできません。You cannot use it before you initialize it. 次のステートメントを使用して初期化できます。You can initialize it using the following statement:

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

このステートメントは、次のステートメントと同じです。This statement is equivalent to the following statement:

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

もちろん、次の例のように、宣言と初期化を同じステートメントに含めることができます。You can, of course, have the declaration and the initialization in the same statement as in the following examples:

int myInt = new int();

または–or–

int myInt = 0;

new 演算子を使用すると、特定の型のパラメーターなしのコンストラクターを呼び出し、既定値を変数に代入します。Using the new operator calls the parameterless constructor of the specific type and assigns the default value to the variable. 前の例では、パラメーターなしのコンス トラクターで値 0myInt に代入していました。In the preceding example, the parameterless constructor assigned the value 0 to myInt. 既定のコンストラクターの呼び出しにより値を代入する詳細については、「既定値の一覧表」を参照してください。For more information about values assigned by calling default constructors, see Default values table.

ユーザー定義型では、new を使用してパラメーターなしのコンストラクターを呼び出します。With user-defined types, use new to invoke the parameterless constructor. たとえば、次のステートメントは、Point 構造体のパラメーターなしのコンストラクターを呼び出します。For example, the following statement invokes the parameterless constructor of the Point struct:

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

この呼び出しの後、構造体は明示的に代入されると見なされます。つまり、すべてのメンバーがその既定値に初期化されます。After this call, the struct is considered to be definitely assigned; that is, all its members are initialized to their default values.

new 演算子の詳細については、「new」を参照してください。For more information about the new operator, see new.

数値型の出力の書式設定については、「数値結果テーブルの書式設定」を参照してください。For information about formatting the output of numeric types, see Formatting numeric results table.

関連項目See also