Freigeben über


Gewusst wie: Bestimmen der Gleichheit zweier Objekte (Visual Basic)

In Visual Basic werden zwei Variablenverweise als identisch betrachtet, wenn ihre Zeiger identisch sind, d. h., wenn beide Variablen auf dieselbe Klasseninstanz im Arbeitsspeicher verweisen. In einer Windows Forms-Anwendung können Sie z. B. einen Vergleich durchführen, um zu ermitteln, ob die aktuelle Instanz (Me) mit einer bestimmten Instanz identisch ist, z. B. Form2.

Visual Basic stellt zwei Operatoren zum Vergleichen von Zeigern bereit. Der Is-Operator gibt True zurück, wenn die Objekte identisch sind, und der IsNot-Operator gibt True zurück, wenn sie nicht vorhanden sind.

Bestimmen, ob zwei Objekte identisch sind

So ermitteln Sie, ob zwei Objekte identisch sind

  1. Richten Sie einen Boolean-Ausdruck ein, um die beiden Objekte zu testen.

  2. Verwenden Sie in Ihrem Testausdruck den Is-Operator mit den beiden Objekten als Operanden.

    Is gibt True zurück, wenn die Objekte auf dieselbe Klasseninstanz zeigen.

Ermitteln, ob zwei Objekte nicht identisch sind

Manchmal möchten Sie eine Aktion ausführen, wenn die beiden Objekte nicht identisch sind, und es kann ungünstig sein, um Not und Is zu kombinieren, z. B If Not obj1 Is obj2. In einem solchen Fall können Sie den IsNot-Operator verwenden.

So ermitteln Sie, ob zwei Objekte nicht identisch sind

  1. Richten Sie einen Boolean-Ausdruck ein, um die beiden Objekte zu testen.

  2. Verwenden Sie in Ihrem Testausdruck den IsNot-Operator mit den beiden Objekten als Operanden.

    IsNot gibt True zurück, wenn die Objekte nicht auf dieselbe Klasseninstanz verweisen.

Beispiel

Im folgenden Beispiel werden Object Variablenpaare getestet, um festzustellen, ob sie auf dieselbe Klasseninstanz verweisen.

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))

Im vorherigen Beispiel wird die folgende Ausgabe angezeigt.

objA different from objB? True

objA identical to objC? True

Siehe auch