Share via


方法: 2 つのオブジェクトが同一であるかどうかを判別する (Visual Basic)

Visual Basic において 2 つの変数参照は、それらのポインターが同じである場合、つまり、両方の変数がメモリ内の同じクラス インスタンスを指している場合、同一であると見なされます。 たとえば、Windows フォーム アプリケーションでは、現在のインスタンス (Me) が Form2 などの特定のインスタンスと同じであるかどうかを判別するために比較を行いたい場合があります。

Visual Basic には、ポインターを比較するための演算子が 2 つ用意されています。 オブジェクトが同一である場合には、Is 演算子 から True が返され、そうでない場合には IsNot 演算子 から True が返されます。

2 つのオブジェクトが同一であるかどうかを判別する

2 つのオブジェクトが同一であるかどうかを確認するには

  1. 2 つのオブジェクトをテストするための Boolean 式を設定します。

  2. テスト式では、2 つのオブジェクトをオペランドとする Is 演算子を使用します。

    各オブジェクトがいずれも同じクラス インスタンスを指している場合は、Is から True が返されます。

2 つのオブジェクトが同一でないかどうかを判別する

2 つのオブジェクトが同一でない場合にアクションの実行が必要なことがあります。しかし、たとえば、If Not obj1 Is obj2 のように NotIs を組み合わせて使用するのは不便です。 そのような場合は、IsNot 演算子を使用できます。

2 つのオブジェクトが同一でないかどうかを調べるには

  1. 2 つのオブジェクトをテストするための Boolean 式を設定します。

  2. テスト式では、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

関連項目