次の方法で共有


値の型と参照型

Visual Basic には、参照型と値型の 2 種類があります。 参照型の変数にはデータ (オブジェクト) への参照が格納され、値型の変数にはデータが直接含まれます。 参照型の場合、2 つの変数が同じオブジェクトを参照できるため、ある変数に対する演算によって、他の変数が参照しているオブジェクトが影響を受ける可能性があります。 値型では、各変数にはデータの独自のコピーがあり、1 つの変数に対する操作が他の変数に影響を与えることはできません ( パラメーターの ByRef 修飾子の場合を除く)。

値の型

データ型は、独自のメモリ割り当て内でデータを保持する場合の 値型 です。 値の型は次のとおりです。

  • すべての数値データ型

  • BooleanCharDate

  • メンバーが参照型の場合でも、すべての構造体

  • 基になる型は常に SByteShortIntegerLongByteUShortUInteger、または ULong

参照型のメンバーが含まれている場合でも、すべての構造体は値型です。 このため、 CharInteger などの値型は、.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を返します。

こちらも参照ください