Vergleichsoperatoren (Visual Basic)

Im Folgenden werden 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 sich unterscheiden. Is, IsNotund Like werden auf separaten Hilfeseiten ausführlich 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. Beliebiger Ausdruck.

comparisonoperator
Erforderlich. Jeder relationale Vergleichsoperator.

object1, object2
Erforderlich. Alle Verweisobjektnamen.

string
Erforderlich. Beliebiger String -Ausdruck.

pattern
Erforderlich. Beliebiger String Ausdruck oder Zeichenbereich.

Bemerkungen

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

Operator True, wenn False, wenn
< (kleiner als) expression1 < expression2 expression1>= expression2
<= (kleiner oder gleich) expression1<= expression2 expression1 > expression2
> (Größer als) expression1 > expression2 expression1<= expression2
>= (Größer als oder gleich) expression1>= expression2 expression1 < expression2
= (Ist gleich) expression1 = expression2 expression1 <> expression2
<> (Ungleich) expression1 <> expression2 expression1 = expression2

Hinweis

Der Operator = wird auch als Zuweisungsoperator 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.

Zahlen vergleichen

Wenn Sie einen Ausdruck vom Typ Single mit einem vom Typ Doublevergleichen, wird der Single Ausdruck in Doublekonvertiert. Dieses Verhalten ist im Gegensatz zu dem in Visual Basic 6 gefundenen Verhalten.

Wenn Sie einen Ausdruck vom Typ Decimal mit einem Ausdruck vom Typ Single oder Doublevergleichen, wird der Decimal Ausdruck in Single oder Doublekonvertiert. Bei Decimal Ausdrücken kann jeder Bruchwert kleiner als 1E-28 verlorengehen. Ein solcher Bruchwertverlust kann dazu führen, dass zwei Werte gleich sind, wenn sie nicht sind. Aus diesem Grund sollten Sie beim Verwenden der Gleichheit (=) darauf achten, zwei Gleitkommavariablen zu vergleichen. Es ist sicherer zu testen, ob der absolute Wert der Differenz zwischen den beiden Zahlen kleiner als eine kleine zulässige Toleranz ist.

Gleitkomma-Ungenauigkeit

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 (Visual Basic).

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 String-Vergleiche auf einer Sortierreihenfolge, die von den internen binären Darstellungen der Zeichen abgeleitet ist. Die Sortierreihenfolge wird durch die Codepage bestimmt. Das folgende Beispiel zeigt eine typische binäre Sortierreihenfolge.

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

Option Compare Text basiert String-Vergleiche auf einer Sortierreihenfolge, bei der Groß- und Kleinschreibung nicht berücksichtigt wird und 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)

Abhängigkeit vom Gebietsschema

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 gleich sein, aber nicht in einem anderen. Wenn Sie einen Zeichenfolgenvergleich verwenden, um wichtige Entscheidungen zu treffen, z. B. ob ein Anmeldeversuch akzeptiert werden soll, sollten Sie die Gebietsschemasensitivität beachten. Erwägen Sie, entweder Option Compare Binary festzulegen oder aufzurufen StrComp, was das Gebietsschema berücksichtigt.

Typlose Programmierung mit relationalen Vergleichsoperatoren

Die Verwendung relationaler Vergleichsoperatoren mit Object Ausdrücken ist unter Option Strict Onnicht zulässig. Wenn Option Strict , und entweder Off oder expression1 ein expression2 Ausdruck istObject, bestimmen die Laufzeittypen, wie sie verglichen werden. Die folgende Tabelle zeigt, wie die Ausdrücke verglichen werden und das Ergebnis des Vergleichs abhängig vom Laufzeittyp der Operanden.

Wenn Operanden sind Vergleich ist:
Beides String Sortiervergleich basierend auf Zeichenfolgensortierungseigenschaften.
Beide numerisch In einen numerischen Vergleich konvertierte DoubleObjekte.
Ein numerischer und eins String Der String wird in einen Double konvertiert, und ein numerischer Vergleich wird durchgeführt. Wenn nicht String in konvertiert Doublewerden kann, wird ein InvalidCastException ausgelöst.
Entweder oder beide sind andere Verweistypen als String Es wird eine InvalidCastException ausgelöst.

Numerische Vergleiche behandeln Nothing als 0. Zeichenfolgenvergleiche behandeln Nothing als "" (eine leere Zeichenfolge).

Ü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 eine dieser Operatoren für eine solche Klasse oder Struktur verwendet, sollten Sie das neu definierte Verhalten verstehen. Weitere Informationen finden Sie unter Operator Procedures.

Beachten Sie, dass der Operator = nur als relationaler Vergleichsoperator und nicht als Zuweisungsoperator ü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 als ausgewertet wird True. Wenn Sie die > Operatoren und < auf Zeichenfolgen 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 gibt der erste Vergleich zurück False , und die restlichen Vergleiche geben zurück True.

Siehe auch