方法: 2 つのオブジェクトが同一であるかどうかを判別する (Visual Basic)
Visual Basic において 2 つの変数参照は、それらのポインターが同じである場合、つまり、両方の変数がメモリ内の同じクラス インスタンスを指している場合、同一であると見なされます。 たとえば、Windows フォーム アプリケーションでは、現在のインスタンス (Me
) が Form2
などの特定のインスタンスと同じであるかどうかを判別するために比較を行いたい場合があります。
Visual Basic には、ポインターを比較するための演算子が 2 つ用意されています。 オブジェクトが同一である場合には、Is 演算子 から True
が返され、そうでない場合には IsNot 演算子 から True
が返されます。
2 つのオブジェクトが同一であるかどうかを判別する
2 つのオブジェクトが同一であるかどうかを確認するには
2 つのオブジェクトをテストするための
Boolean
式を設定します。テスト式では、2 つのオブジェクトをオペランドとする
Is
演算子を使用します。各オブジェクトがいずれも同じクラス インスタンスを指している場合は、
Is
からTrue
が返されます。
2 つのオブジェクトが同一でないかどうかを判別する
2 つのオブジェクトが同一でない場合にアクションの実行が必要なことがあります。しかし、たとえば、If Not obj1 Is obj2
のように Not
と Is
を組み合わせて使用するのは不便です。 そのような場合は、IsNot
演算子を使用できます。
2 つのオブジェクトが同一でないかどうかを調べるには
2 つのオブジェクトをテストするための
Boolean
式を設定します。テスト式では、2 つのオブジェクトをオペランドとする
IsNot
演算子を使用します。各オブジェクトが指しているクラス インスタンスが同じでない場合は、
IsNot
からTrue
が返されます。
例
次の例では、Object
変数のペアをテストして、それらが同じクラス インスタンスを指しているかどうかを確認します。
Dim objA, objB, objC As Object
objA = My.User
objB = New ApplicationServices.User
objC = My.User
MsgBox("objA different from objB? " & CStr(objA IsNot objB))
MsgBox("objA identical to objC? " & CStr(objA Is objC))
上記の例では、次の出力が表示されます。
objA different from objB? True
objA identical to objC? True
関連項目
.NET