Visual Basic には、参照型と値型の 2 種類があります。 参照型の変数にはデータ (オブジェクト) への参照が格納され、値型の変数にはデータが直接含まれます。 参照型の場合、2 つの変数が同じオブジェクトを参照できるため、ある変数に対する演算によって、他の変数が参照しているオブジェクトが影響を受ける可能性があります。 値型では、各変数にはデータの独自のコピーがあり、1 つの変数に対する操作が他の変数に影響を与えることはできません ( パラメーターの ByRef 修飾子の場合を除く)。
値の型
データ型は、独自のメモリ割り当て内でデータを保持する場合の 値型 です。 値の型は次のとおりです。
すべての数値データ型
Boolean
、Char
、Date
メンバーが参照型の場合でも、すべての構造体
基になる型は常に
SByte
、Short
、Integer
、Long
、Byte
、UShort
、UInteger
、またはULong
参照型のメンバーが含まれている場合でも、すべての構造体は値型です。 このため、 Char
や Integer
などの値型は、.NET Framework 構造体によって実装されます。
Decimal
など、予約済みキーワードを使用して値型を宣言できます。
New
キーワードを使用して値型を初期化することもできます。 これは、型にパラメーターを受け取るコンストラクターがある場合に特に便利です。 この例として、 Decimal(Int32, Int32, Int32, Boolean, Byte) コンストラクターがあり、指定された部分から新しい Decimal
値が作成されます。
参照型
参照型は、そのデータへの参照を格納します。 参照の種類は次のとおりです。
String
要素が値型の場合でも、すべての配列
クラス型 (例: Form
デリゲート
クラスは 参照型です。 メンバーが値型の場合でも、すべての配列は参照型であることに注意してください。
すべての参照型は基になる .NET Framework クラスを表すので、初期化するときに New Operator キーワードを使用する必要があります。 次のステートメントは配列を初期化します。
Dim totals() As Single = New Single(8) {}
型ではない要素
次のプログラミング要素は、宣言された要素のデータ型として指定できないため、型として修飾されません。
名前空間
モジュール
イベント
プロパティとプロシージャ
変数、定数、およびフィールド
オブジェクト データ型の操作
Object
データ型の変数には、参照型または値型のいずれかを割り当てることができます。
Object
変数は常にデータへの参照を保持し、データ自体は保持しません。 ただし、 Object
変数に値型を割り当てると、独自のデータを保持しているかのように動作します。 詳細については、「 オブジェクト データ型」を参照してください。
Object
変数が参照型または値型として機能しているかどうかを調べるには、Microsoft.VisualBasic名前空間のInformation クラスのIsReference メソッドに渡します。
Information.IsReferenceは、Object
変数の内容が参照型を表す場合にTrue
を返します。
こちらも参照ください
- Null 許容値型
- Visual Basic における 型変換
- 構造ステートメント
- データ型の効率的な使用
- オブジェクト データ型
- データ型
.NET