値型と参照型
更新 : 2007 年 11 月
データ型が自身のメモリ内にデータを保持する場合、そのデータ型は値型です。参照型には、データを保持する別のメモリ位置へのポインタが格納されます。
値型
値型には、次のようなものがあります。
すべての数値データ型
Boolean、Char、および Date
すべての構造体 (メンバが参照型の場合でも)
列挙型 (基になる型が常に SByte、Short、Integer、Long、Byte、UShort、UInteger、または ULong であるため)
参照型
参照型には、次のようなものがあります。
String
すべての配列 (要素が値型の場合でも)
クラス型 (Form など)
デリゲート
型ではない要素
次のプログラミング要素は、宣言された要素のデータ型として指定できないため、型として修飾しません。
名前空間
モジュール
イベント
プロパティおよびプロシージャ
変数、定数およびフィールド
オブジェクトのデータ型の操作
オブジェクト型 (Object) の変数には参照型と値型のどちらでも代入できます。オブジェクト型 (Object) の変数は常にデータそのものではなくデータへのポインタを保持します。ただし、オブジェクト型 (Object) の変数に値型を代入すると、独自のデータを保持しているように動作します。詳細については、「オブジェクト型 (Object)」を参照してください。
Object 変数を、Microsoft.VisualBasic 名前空間の Information クラス上にある IsReference メソッドに渡すことにより、参照型または値型のどちらとして動作しているかどうかを調べることができます。Object 変数の内容が参照型を表している場合、Information.IsReference は True を返します。