Vergleichsoperatoren (Visual Basic)
Die folgenden Operatoren sind die Vergleichsoperatoren von Visual Basic.
Operator <
Operator <=
Operator >
Operator >=
Operator =
Operator <>
Diese Operatoren vergleichen zwei Ausdrücke, um zu festzustellen, ob sie gleich sind, und wenn nicht, wie sie sich unterscheiden. Is, IsNot und Like werden ausführlich auf separaten Hilfeseiten erläutert. Die relationalen Vergleichsoperatoren werden ausführlich auf dieser Seite behandelt.
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.expression
Erforderlich. Ein beliebiger Ausdruck.comparisonoperator
Erforderlich. Beliebiger relationaler Vergleichsoperator.object1, object2
Erforderlich. Beliebige Verweisobjektnamen.string
Erforderlich. Ein beliebiger String-Ausdruck.pattern
Erforderlich. Beliebiger String-Ausdruck oder Zeichenbereich.
Hinweise
Die folgende Tabelle enthält eine Liste der relationalen Vergleichsoperatoren und die Bedingungen, die festlegen, ob result den Wert True oder False aufweist.
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 oder gleich) |
expression1 >= expression2 |
expression1 < expression2 |
= (Gleich) |
expression1 = expression2 |
expression1 <> expression2 |
<> (Ungleich) |
expression1 <> expression2 |
expression1 = expression2 |
Tipp
Der =-Operator (Visual Basic) wird auch als Zuweisungsoperator verwendet.
Die Operatoren Is, IsNot und Like haben eine spezielle Bedeutung und unterscheiden sich in der Funktionalität von den Operatoren der vorhergehenden Tabelle.
Vergleich von Zahlen
Wenn ein Ausdruck vom Typ Single mit einem Ausdruck vom Typ Double verglichen wird, wird der Single-Ausdruck in Double konvertiert. Dieses Verhalten ist gegensätzlich zu dem Verhalten in Visual Basic 6.
Wenn ein Ausdruck vom Typ Decimal mit einem Ausdruck vom Typ Single oder Double verglichen wird, wird der Decimal-Ausdruck ebenso in Single bzw. Double konvertiert. Bei Decimal-Ausdrücken gehen Dezimalstellenwerte unter 1E-28 unter Umständen verloren. Dieser Verlust von Dezimalstellenwerten kann dazu führen, dass zwei Werte als gleich verglichen werden, obwohl sie nicht gleich sind. Aus diesem Grund sollte der Gleichheitsoperator (=) beim Vergleichen von zwei Gleitkommavariablen mit größter Sorgfalt verwendet werden. Es ist ratsam zu testen, ob der absolute Wert der Differenz zwischen den zwei Zahlen kleiner als eine kleine akzeptable Toleranz ist.
Ungenauigkeit von Gleitkommawerten
Wenn Sie mit Gleitkommazahlen arbeiten, sollten Sie beachten, dass sie im Arbeitsspeicher nicht immer präzise dargestellt werden. Dies könnte bei bestimmten Operationen zu unerwarteten Ergebnissen führen, z. B. bei einem Wertevergleich und beim Operator Mod(Visual Basic). Weitere Informationen finden Sie unter Problembehandlung bei Datentypen (Visual Basic).
Vergleichen von Zeichenfolgen
Bei einem Vergleich von Zeichenfolgen werden die Zeichenfolgen auf der Grundlage ihrer alphabetischen Sortierreihenfolge ausgewertet. Diese richtet sich nach der Option Compare-Einstellung.
Bei Option Compare Binary wird der Zeichenfolgenvergleich auf der Grundlage einer Sortierreihenfolge durchgeführt, die von den internen binären Darstellungen der Zeichen abgeleitet wird. Die Sortierreihenfolge wird durch die Codepage festgelegt. Das folgende Beispiel zeigt eine typische binäre Sortierreihenfolge.
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text führt einen Zeichenfolgenvergleich auf der Grundlage einer vom Gebietsschema der Anwendung vorgegebenen Textsortierreihenfolge durch. Die Groß-/Kleinschreibung wird dabei nicht berücksichtigt. Wenn Sie Option Compare Text festlegen und die Zeichen im vorangehenden Beispiel sortieren, wird folgende Textsortierreihenfolge angewendet:
(A=a) < (À= à) < (B=b) < (E=e) < (Ê= ê) < (Ø = ø) < (Z=z)
Abhängigkeit vom Gebietsschema
Wenn Sie Option Compare Text festlegen, kann das Ergebnis eines Zeichenfolgenvergleichs vom Gebietsschema abhängen, in dem die Anwendung ausgeführt wird. Zwei Zeichen könnten in einem Gebietsschema als gleich, in einem anderen jedoch als nicht gleich ermittelt werden. Wenn Sie Zeichenfolgenvergleiche für wichtige Entscheidungen verwenden (z. B. ob ein Anmeldeversuch akzeptiert werden soll), sollten Sie hinsichtlich der Gegebenheiten der einzelnen Gebietsschemas vorsichtig sein. Überlegen Sie, ob Sie Option Compare Binary festlegen oder die StrComp aufrufen, die das Gebietsschema berücksichtigt.
Typenloses Programmieren mit relationalen Vergleichsoperatoren
Die Verwendung relationaler Vergleichsoperatoren in Object-Ausdrücken ist unter Option Strict On nicht möglich. Wenn Option Strict auf Off festgelegt wurde und expression1 oder expression2 ein Object-Ausdruck ist, legen die Laufzeittypen fest, wie sie verglichen werden. Aus der folgenden Tabelle können Sie ersehen, wie Ausdrücke abhängig vom zugrunde liegenden Laufzeittyp der Operanden verglichen werden bzw. wie das Ergebnis aussieht.
Bei folgenden Operanden |
Verwendeter Vergleich |
---|---|
Beide String |
Sortiervergleich basierend auf den Eigenschaften der Zeichenfolgensortierung. |
Beide numerisch |
Objekte werden in Double konvertiert, numerischer Vergleich. |
Einer numerisch und einer String |
String wird in Double konvertiert und numerischer Vergleich wird ausgeführt. Wenn String nicht in Double konvertiert werden kann, wird InvalidCastException ausgelöst. |
Einer oder beide sind Verweistypen, jedoch nicht vom Typ String |
Eine InvalidCastException wird ausgelöst. |
In numerischen Vergleichen wird Nothing als 0 behandelt. Zeichenfolgenvergleiche behandeln Nothing als "" (eine leere Zeichenfolge).
Überladen
Die relationalen Vergleichsoperatoren (<. <=, >, >=, =, <>) können überladen werden. Das bedeutet, dass eine Klasse oder Struktur sein bzw. ihr Verhalten neu definiert, wenn ein Operand den Typ dieser Klasse oder Struktur aufweist. Wenn der Code einen dieser Operatoren auf eine solche Klasse oder Struktur anwendet, sollten Sie auf jeden Fall ihr neu definiertes Verhalten verstehen. Weitere Informationen finden Sie unter Operatorprozeduren (Visual Basic).
Beachten Sie, dass der =-Operator (Visual Basic) nur als ein relationaler Vergleichsoperator und nicht als Zuweisungsoperator überladen werden kann.
Beispiel
Das folgende Beispiel zeigt unterschiedliche Verwendungsmöglichkeiten von relationalen Vergleichsoperatoren für den Vergleich von Ausdrücken. Relationale Vergleichsoperatoren geben ein Boolean-Ergebnis zurück, das darstellt, ob der angegebene Ausdruck True ergibt. Wenn der Operator > und der Operator < auf Zeichenfolgen angewendet werden, wird der Vergleich mit der normalen alphabetischen Sortierreihenfolge der Zeichenfolgen ausgeführt. Diese Reihenfolge kann von den Gebietsschemaeinstellungen abhängig sein. Die Einstellung von Option Compare legt fest, ob beim Sortieren die Groß- und Kleinschreibung berücksichtigt wird.
Dim testResult As Boolean
testResult = 45 < 35
testResult = 45 = 45
testResult = 4 <> 3
testResult = "5" > "4444"
Im vorhergehenden Beispiel gibt der erste Vergleich False zurück; die übrigen Vergleiche geben dagegen True zurück.
Siehe auch
Aufgaben
Problembehandlung bei Datentypen (Visual Basic)
Referenz
Operatorrangfolge in Visual Basic
Operatoren sortiert nach Funktionalität (Visual Basic)