Vergleichsoperatoren (Visual Basic)
Im Folgenden werden die in Visual Basic definierten Vergleichsoperatoren aufgeführt.
<
-Operator
<=
-Operator
>
-Operator
>=
-Operator
=
-Operator
<>
-Operator
Diese Operatoren vergleichen zwei Ausdrücke, um zu bestimmen, ob sie gleich sind und wenn nicht, wie sie sich unterscheiden. Is
, IsNot
und 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 True
istFalse
.
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 Double
vergleichen, wird der Single
Ausdruck in Double
konvertiert. 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 Double
vergleichen, wird der Decimal
Ausdruck in Single
oder Double
konvertiert. 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 On
nicht 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 Double Objekte. |
Ein numerischer und eins String |
Der String wird in einen Double konvertiert, und ein numerischer Vergleich wird durchgeführt. Wenn nicht String in konvertiert Double werden 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
.