Vergleichsoperatoren (Visual Basic)

Aktualisiert: November 2007

Die folgenden Operatoren sind die Vergleichsoperatoren von Visual Basic.

<-Operator

<=-Operator

>-Operator

>=-Operator

=-Operator

<>-Operator

Is-Operator (Visual Basic)

IsNot-Operator

Like-Operator (Visual Basic)

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. Beliebiger Ausdruck.

  • comparisonoperator
    Erforderlich. Beliebiger relationaler Vergleichsoperator.

  • object1, object2
    Erforderlich. Beliebige Verweisobjektnamen.

  • string
    Erforderlich. 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

Hinweis:

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, müssen Sie daran denken, dass die Zahlen im Speicher 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 hierzu finden Sie unter Problembehandlung bei Datentypen.

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

Beim numerischen Vergleich wird Nothing als 0 (null) behandelt. Beim Zeichenfolgenvergleich wird Nothing als "" (eine leere Zeichenfolge) behandelt.

Überladen

Die relationalen Vergleichsoperatoren (<, <=, >, >=, =, <>) können überladen werden. Das bedeutet, dass eine Klasse oder Struktur 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 hierzu finden Sie unter Operatorprozeduren.

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

Konzepte

Vergleichsoperatoren in Visual Basic

Referenz

=-Operator (Visual Basic)

Operatorrangfolge in Visual Basic

Operatoren sortiert nach Funktionalität

InvalidCastException