Freigeben über


Vergleichsoperatoren (Visual Basic)

Im Folgenden sind die in Visual Basic definierten Vergleichsoperatoren aufgeführt.

<-Operator

<=-Operator

>-Operator

>=-Operator

=-Operator

<>-Operator

Is-Operator

IsNot-Operator

Like-Operator

Diese Operatoren vergleichen zwei Ausdrücke, um zu bestimmen, ob sie gleich sind, und wenn nicht, wie sie unterschiedlich sind. Is, IsNotund Like werden ausführlich auf separaten Hilfeseiten erläutert. Die relationalen Vergleichsoperatoren werden auf dieser Seite ausführlich erläutert.

Syntax

result = expression1 comparisonoperator expression2  
result = object1 [Is | IsNot] object2  
result = string Like pattern  

Bestandteile

result
Erforderlich. Ein Boolean Wert, der das Ergebnis des Vergleichs darstellt.

expression1, expression2
Erforderlich. Ein beliebiger Ausdruck.

comparisonoperator
Erforderlich. Jeder relationale Vergleichsoperator.

object1, object2
Erforderlich. Alle Verweisobjektnamen.

string
Erforderlich. Ein beliebiger String Ausdruck.

pattern
Erforderlich. Ein beliebiger String Ausdruck oder Bereich von Zeichen.

Bemerkungen

Die folgende Tabelle enthält eine Liste der relationalen Vergleichsoperatoren und der Bedingungen, die bestimmen, ob resultTrue oder False.

Bediener True wenn False wenn
< (Kleiner als) expression1 < expression2 expression1 >= expression2
<= Kleiner als oder gleich expression1 <= expression2 expression1 > expression2
> (Größer als) expression1 > expression2 expression1 <= expression2
>= (Größer als oder gleich) expression1 >= expression2 expression1 < expression2
= (Gleich) expression1 = expression2 expression1 <> expression2
<> (Nicht gleich) expression1 <> expression2 expression1 = expression2

Hinweis

Der =-Operator wird auch als Zuordnungsoperator verwendet.

Der Is Operator, der IsNot Operator und der Like Operator verfügen über spezifische Vergleichsfunktionen, die sich von den Operatoren in der vorherigen Tabelle unterscheiden.

Vergleichen von Zahlen

Wenn Sie einen Ausdruck vom Typ SingleDoublemit einem Typ vergleichen, wird der Single Ausdruck in Double. Dieses Verhalten entspricht dem Verhalten in Visual Basic 6.

Ebenso wird der Ausdruck beim Vergleichen eines Typausdrucks Decimal mit einem Ausdruck des Typs Single oder Doubledes Ausdrucks in oder Double.SingleDecimal Bei Decimal Ausdrücken kann jeder Bruchwert, der kleiner als 1E-28 ist, verlorengehen. Ein solcher Bruchwertverlust kann dazu führen, dass zwei Werte gleich verglichen werden, wenn sie nicht vorhanden sind. Aus diesem Grund sollten Sie beim Verwenden der Gleichheit (=) zum Vergleichen von zwei Gleitkommavariablen achten. Es ist sicherer zu testen, ob der absolute Wert der Differenz zwischen den beiden Zahlen kleiner als eine kleine akzeptable Toleranz ist.

Gleitkomma imprägniert

Wenn Sie mit Gleitkommazahlen arbeiten, denken Sie daran, dass sie nicht immer eine genaue Darstellung im Arbeitsspeicher haben. Dies kann zu unerwarteten Ergebnissen aus bestimmten Vorgängen führen, z. B. Wertvergleich und Mod-Operator. Weitere Informationen finden Sie unter "Problembehandlung bei Datentypen".

Vergleichen von Zeichenfolgen

Wenn Sie Zeichenfolgen vergleichen, werden die Zeichenfolgenausdrücke basierend auf ihrer alphabetischen Sortierreihenfolge ausgewertet, die von der Option Compare Einstellung abhängt.

Option Compare Binary basiert auf Zeichenfolgenvergleichen auf einer Sortierreihenfolge, die von den internen binären Darstellungen der Zeichen abgeleitet ist. Die Sortierreihenfolge wird von der Codeseite bestimmt. Das folgende Beispiel zeigt eine typische binäre Sortierreihenfolge.

A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø

Option Compare Text basiert auf Zeichenfolgenvergleichen bei einer Sortierreihenfolge, die durch das Gebietsschema Ihrer Anwendung bestimmt wird. Wenn Sie die Zeichen im vorherigen Beispiel festlegen Option Compare Text und sortieren, gilt die folgende Textsortierreihenfolge:

(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)

Gebietsschemaabhängigkeit

Wenn Sie festlegen Option Compare Text, kann das Ergebnis eines Zeichenfolgenvergleichs vom Gebietsschema abhängen, in dem die Anwendung ausgeführt wird. Zwei Zeichen können in einem Gebietsschema, aber nicht in einem anderen Gleichwert verglichen werden. Wenn Sie einen Zeichenfolgenvergleich verwenden, um wichtige Entscheidungen zu treffen, z. B. ob sie versuchen, sich anzumelden, sollten Sie auf die Gebietsschemaempfindlichkeit aufmerksam sein. Erwägen Sie entweder das Festlegen Option Compare Binary oder Aufrufen des StrCompGebietsschemas, das das Gebietsschema berücksichtigt.

Typlose Programmierung mit relationalen Vergleichsoperatoren

Die Verwendung relationaler Vergleichsoperatoren mit Object Ausdrücken ist nicht zulässig unter Option Strict On. Wenn Option Strict es sich um einen Object Ausdruck handelt oder expression1expression2 ein Ausdruck istOff, bestimmen die Laufzeittypen, wie sie verglichen werden. Die folgende Tabelle zeigt, wie die Ausdrücke verglichen werden, und das Ergebnis aus dem Vergleich, je nach Laufzeittyp der Operanden.

Wenn Operanden sind Vergleich ist
Beide String Sortiervergleich basierend auf Zeichenfolgensortierungsmerkmalen.
Beide numerischen Werte In einen numerischen Vergleich konvertierte DoubleObjekte.
Eine zahl und eine String Die String Konvertierung erfolgt in einen Double numerischen Vergleich. Wenn die String Konvertierung nicht möglich Doubleist, wird ein InvalidCastException Fehler ausgelöst.
Eine oder beide sind andere Referenztypen als String Es InvalidCastException wird eingeworfen.

Numerische Vergleiche werden als 0 behandelt Nothing . Zeichenfolgenvergleiche werden als "" (eine leere Zeichenfolge) behandeltNothing.

Überladen

Die relationalen Vergleichsoperatoren (<. <=, , >>=, =, <>) können überladen werden, was bedeutet, dass eine Klasse oder Struktur ihr Verhalten neu definieren kann, wenn ein Operand über den Typ dieser Klasse oder Struktur verfügt. Wenn Ihr Code eines dieser Operatoren für eine solche Klasse oder Struktur verwendet, sollten Sie das neu definierte Verhalten verstehen. Weitere Informationen finden Sie unter Operatorprozeduren.

Beachten Sie, dass der Operator = nur als relationaler Vergleichsoperator und nicht als Zuordnungsoperator überladen werden kann.

Beispiel

Das folgende Beispiel zeigt verschiedene Verwendungen relationaler Vergleichsoperatoren, die Sie zum Vergleichen von Ausdrücken verwenden. Relationale Vergleichsoperatoren geben ein Boolean Ergebnis zurück, das angibt, ob der angegebene Ausdruck ausgewertet wird True. Wenn Sie die > Zeichenfolgen und < Operatoren anwenden, wird der Vergleich mit der normalen alphabetischen Sortierreihenfolge der Zeichenfolgen durchgeführt. Diese Reihenfolge kann von Ihrer Gebietsschemaeinstellung abhängig sein. Ob bei der Sortierung die Groß-/Kleinschreibung beachtet wird oder nicht, hängt von der Einstellung "Option Compare " ab.

Dim x As testClass
Dim y As New testClass()
x = y
If x Is y Then
    ' Insert code to run if x and y point to the same instance.
End If

Im vorherigen Beispiel wird der erste Vergleich zurückgegeben False und die verbleibenden Vergleiche zurückgegeben True.

Siehe auch