Visual Basic .NET: Vergleichsoperatoren

Aus Wikibooks

In der Datentypentabelle im Kapitel über Variablen ist auch der Boolean-Typ aufgeführt, der Wahrheitswerte speichert, sprich wahr oder falsch bzw. in Visual Basic True oder False. Dieser Datentyp wird später im Verborgenen eine große Rolle spielen, deshalb ist das ausgiebige Studium seiner Operatoren von elementarer Bedeutung.

Mit „seine Operatoren“ sind die Vergleichsoperatoren in diesem Kapitel und die Bool'schen Operatoren im nächsten Kapitel gemeint. Insgesamt sind dies 16 Stück, was die Bedeutung dieses Datentyps klarmacht. Diese Operatoren akzeptieren alle Datentypen als Eingabe und geben immer Boolean-Werte zurück.

Wenn Sie die Beispiele dieses Kapitels nachvollziehen und die Ausgabe der Boolean-Variablen über die System.Windows.Forms.MessageBox.Show-Methode nicht arbeitet, ersetzen Sie die Boolean-Variable im Aufruf der Funktion durch einen Aufruf der IIf-Funktion, wie im folgenden Beispiel. Dabei steht MeineVariable für die auszugebende Variable. Im Hinweisfeld erscheint dann True oder False, je nach dem Wert der Variablen.

Code:  

Console.WriteLine(IIf(MeineVariable, "True", "False"))


Der Gleichheitsoperator =[Bearbeiten]

Moment mal, ist = nicht der Zuweisungsoperator? Stimmt, aber eben auch der Gleichheitsoperator. Die Gleichheitsoperation überprüft, ob seine Operanden gleich sind, also die durch die Operanden dargestellten Werte gleich sind. Sind diese Werte gleich, gibt die Operation True zurück, sonst False. Visual Basic erkennt den Unterschied zwischen Zuweisungs- und Gleichheitsoperator.

Code:  

Dim a As Integer = 3
Dim b As Boolean
b = a = 3

Ausgabe:  

b = True

Die letzte Zeile zeigt, dass es der gute Stil doch einmal erlaubt, eine an für sich unnötige Klammer zu setzen. Die folgende, absolut äquivalente Zeile zeigt, was hier eine Zuweisungs- und was eine Gleichheitsoperation ist.

Code:  

b = (a = 3)

Ausgabe:  

b = True

Die Gleichheitsoperation vergleicht a (mit dem Wert 3) und 3. Das Ergebnis ist True, da beide Werte gleich sind. Dieses Ergebnis wird dann auf b gespeichert. Wäre a = 4 gewesen, so wäre das Ergebnis der Gleichheitsoperation False gewesen. Der Gleichheitsoperator gilt übrigens auch für Zeichenketten, wie das folgende Beispiel zeigt.

Code:  

Dim s1 As String = "Test", s2 As String = "Test"
Dim s3 As Boolean = (s1 = s2)

Ausgabe:  

s3 = True

Der Ungleichheitsoperator <>[Bearbeiten]

Der Ungleichheitsoperator ist das genaue Gegenteil des Gleichheitsoperators (wie der Name schon vermuten lässt). Er gibt True zurück, wenn seine Operanden ungleich sind, sonst False. Wir wollen auf ein weiteres Beispiel verzichten. Probieren Sie den Operator aus, indem Sie in den obigen Beispielen den Gleichheits- durch den Ungleichheitsoperator ersetzen.

Die Relationsoperatoren <, <=, > und >=[Bearbeiten]

Wenn Sie erst einmal die Funktionsweise der beiden obigen Operatoren verstanden haben, sind diese Operatoren relativ leicht zu verstehen. Die folgende Übersicht fasst die Operatoren zusammen:

Operator Gibt True zurück, wenn... Gibt False zurück, wenn...
< ...der erste Operand kleiner als der zweite Operand ist. ...der erste Operand größer als der zweite Operand ist oder die Werte beider Operanden gleich sind.
<= ...der erste Operand kleiner als der zweite Operand oder gleich dem zweiten Operand ist. ...der erste Operand größer als der zweite Operand ist.
> ...der erste Operand größer als der zweite Operand ist. ...der erste Operand kleiner als der zweite Operand ist oder die Werte beider Operanden gleich sind.
>= ...der erste Operand größer als der zweite Operand oder gleich dem zweiten Operand ist. ...der erste Operand kleiner als der zweite Operand ist.

Diese Operationen erscheinen für Zahlen jeglicher Art sofort logisch, bei Zeichenketten ist die Sache nicht so offensichtlich. Hier wird alphabetisch sortiert. Man kann sich das wie ein Lexikon vorstellen, in dem die Einträge alphabetisch sortiert werden. So ist „Maier“ kleiner als „Meier“, da „a“ vor „e“ steht. Die genaue Sortierreihenfolge wird nicht nur vom Alphabet bestimmt, da auch Sonderzeichen berücksichtigt werden müssen, doch für die alltägliche Arbeit reichen diese Faustregeln. Nachfolgend einige Beispiele zu dieser Operatorenfamilie:

Code:  

Dim a As Boolean = (3 < 4)
Dim b As Boolean = (3 < 3)
Dim c As Boolean = (3 <= 3)
Dim d As Boolean = ("Test" < "Tasse")
Dim e As Boolean = ("dass" < "das")

Ausgabe:  

a = True
b = False
c = True
d = False
e = False

Zu d: "Ta" steht im Alphabet vor "Te", also ist "Tasse" kleiner als "Test".
Zu e: Verhilft das Alphabet nicht zu einer Sortierung, ist die kürzere Zeichenkette (hier "das") kleiner als die längere (hier "dass").

Zusammenfassung[Bearbeiten]

Die folgende Tabelle fasst alle Vergleichsoperatoren kurz zusammen. Dabei ist links der Operator und oben das tatsächliche Verhältnis der Operanden zueinander angegeben. Der linke Operand ist a, der rechte Operand ist b.

a < b a = b a > b
= False True False
<> True False True
< True False False
<= True True False
> False False True
>= False True True