オブジェクト変数の代入
更新 : 2007 年 11 月
オブジェクト変数にオブジェクトを代入するには、通常の代入ステートメントを使用します。次に示す例のように、オブジェクト式または Nothing キーワードを代入できます。
Dim thisObject As Object
' The following statement assigns an object reference.
thisObject = Form1
' The following statement discontinues association with any object.
thisObject = Nothing
Nothing は、変数に現在代入されているオブジェクトがないことを表します。
初期化
コードが実行を開始すると、オブジェクト変数は Nothing に初期化されます。宣言に初期化が含まれている場合は、この宣言ステートメントが実行されるたびに、指定した値に再初期化されます。
New キーワードを使用すると、宣言に初期化を含めることができます。次に示す宣言ステートメントは、オブジェクト変数 testUri と ver を宣言し、特定のオブジェクトを代入します。それぞれ適切なクラスのオーバーロードされたコンストラクタのいずれか 1 つを使用してオブジェクトを初期化します。
Dim testUri As New System.Uri("https://www.microsoft.com")
Dim ver As New System.Version(6, 1, 0)
関連付けの解除
オブジェクト変数を Nothing に設定すると、変数と特定のオブジェクトとの関連付けは失われます。このため、変数を変更するときに誤ってオブジェクトを変更してしまうことがなくなります。また、次の例のように、オブジェクト変数が有効なオブジェクトを指しているかどうかをテストすることもできます。
If otherObject IsNot Nothing Then
' otherObject refers to a valid object, so your code can use it.
End If
変数が他のアプリケーションのオブジェクトを参照している場合は、アプリケーションが終了されているのか、単にオブジェクトが無効になっているのかをこのテストで調べることはできません。
値が Nothing のオブジェクト変数は、null 参照とも呼ばれます。
現在のインスタンス
オブジェクトの現在のインスタンスとは、その内部で現在コードが実行されているインスタンスです。すべてのコードはプロシージャ内で実行されるため、現在のインスタンスは、呼び出されたプロシージャでのインスタンスになります。
Me キーワードは、現在のインスタンスを参照するオブジェクト変数として機能します。プロシージャが Shared (Visual Basic) でない場合は、Me キーワードを使って現在のインスタンスへのポインタを取得できます。共有プロシージャをクラスの特定のインスタンスに関連付けることはできません。
Me キーワードは、他のモジュールのプロシージャに現在のインスタンスを渡す場合に特に便利です。たとえば、多数の XML ドキュメントがあり、標準テキストをそれらすべてに追加するとします。これを実行するプロシージャを定義する例を次に示します。
Sub addStandardText(XmlDoc As System.Xml.XmlDocument)
XmlDoc.CreateTextNode("This text goes into every XML document.")
End Sub
次に、この定義したプロシージャをすべての XML ドキュメント オブジェクトで呼び出し、引数として現在のインスタンスを渡します。次にコード例を示します。
addStandardText(Me)
参照
処理手順
方法 : Visual Basic でオブジェクト変数を宣言し、オブジェクト変数にオブジェクトを代入する
方法 : オブジェクト変数がインスタンスを参照しないようにする