Auswertung einer IF-Anweisung in VB.NET

8

Was ist bei den folgenden If-Anweisungen in VB.NET die Reihenfolge, in der die Bedingungen ausgewertet werden?

Fall 1:

%Vor%

Fall 2:

%Vor%

Fall 3:

%Vor%     
cjk 02.02.2009, 08:32
quelle

3 Antworten

9

VB.NET ist ein sehr seltsames Biest vom Standpunkt des C-Programmierers. Wie Gerrie in einer anderen Antwort erwähnte, werden alle drei Bedingungen in ihrer Gesamtheit ohne Kurzschluss ausgewertet. AndAlso und OrElse können Ihren Tag retten, wenn Sie das möchten.

Wie für das letzte if lautet die Reihenfolge der Auswertung wie folgt:

%Vor%

Als Faustregel gilt: Wenn es any Ambiguität gibt, verwenden Sie Klammern, um die Reihenfolge der Auswertung explizit anzugeben.

    
Anton Gogolev 02.02.2009, 08:43
quelle
11

VB.Net wertet alle Bedingungen aus, daher ist die Reihenfolge hier nicht wichtig.

Wenn Sie Kurzschlüsse verwenden möchten, verwenden Sie die Schlüsselwörter AndAlso und OrElse.

    
Gerrie Schenck 02.02.2009 08:39
quelle
1

Dies beantwortet nicht genau die gestellte Frage, da es bereits beantwortet wurde, ich fühlte die Notwendigkeit, das von Anton erwähnte "OrElse" -Schlüsselwort zu erweitern, und es ist relativ: "AndAlso", weil jemand landet Diese Frage möchte ich eigentlich eine Erklärung zu diesen Fragen.

'OrElse' und 'AndAlso' ist nützlich, wenn Sie eine explizit geordnete Auswertung benötigen.

Im Gegensatz zu "Oder" und "And", wenn alle Ausdrücke ausgewertet wurden, kann die If-Anweisung die verbleibenden Ausdrücke überspringen, wenn der erste Ausdruck den gewünschten Wert ergibt, wenn Sie "OrElse" oder "AndAlso" verwenden.

Im folgenden Fall gilt die Reihenfolge der Ausdrücke für "OrElse" von links nach rechts, bewertet aber nicht immer alle Ausdrücke abhängig vom Ergebnis des vorhergehenden Werts:

%Vor%

Wenn Ausdruck1 wahr ist, dann werden Ausdruck 2 und 3 ignoriert. Wenn Ausdruck1 bei Falsch ist, dann wird Ausdruck2 ausgewertet und dann Ausdruck3, wenn Ausdruck2 als Wahr ausgewertet wird.

%Vor%

Ein alternatives Beispiel für die Verwendung von 'OrElse':

%Vor%

Das obige Beispiel ist dasselbe wie das Folgende:

%Vor%

Es gibt auch das Schlüsselwort AndALso :

%Vor%

Welches ist wie folgt verwendbar:

%Vor%

Anders als "Und", wie "Oder", werden immer alle Ausdrücke ausgewertet:

%Vor%

Aber weil Ordnung mit "OrElse" und "AndAlso" wirken kann, sollte die Bewertung, ob ein Objekt null ist, wie in den obigen Beispielen zuerst durchgeführt werden.

Das Folgende wird eine Ausnahme verursachen, wenn "Mein Objekt" NULL ist

%Vor%

Bitte kommentieren Sie, wenn ich hier einen Fehler oder Tippfehler gemacht habe, wie ich dies um 5:16 morgens nach 2 Tagen ohne Schlaf geschrieben habe.

    
Codie Morgan 17.12.2013 03:17
quelle

Tags und Links