AndAlso vs. And (und OrElse vs. Or) in VB.NET
Augen auf bei der Nutzung von And und Or in VB.NET: Wenn man die beiden Operatoren nutzt, werden stets beide Seiten des Operators ausgewertet.
Wenn man (wie von einigen anderen Sprachen gewohnt) nur so viel auswerten lassen möchte, wie nötig, sollte man statt And "AndAlso" verwenden, und statt Or "OrElse".
In folgenden Fällen ergibt sich daraus eine Zeitersparnis: "False And Ausdruck" würde den Ausdruck auswerten, obwohl ja auch ohne Auswertung klar wäre, dass das Gesamtergebnis "False" lauten wird. Bei "False AndAlso Ausdruck" wird der Ausdruck nicht ausgewertet. "False" bedeutet hierbei, dass die linke Seite des And-Operators bereits ausgewertet wurde, und False ergeben hat.
Analoges gilt für "True Or Ausdruck" vs. "True OrElse Ausdruck".
Wichtiger als die Zeitersparnis ist jedoch folgende Situation: Wenn sich ein Ausdruck nicht immer auswerten lässt, fängt man das typischerweise ab, indem man z.B. in C++ schreiben könnte:
if (str != NULL && str.length>0){
...
}
In VB.NET müsste man entsprechend schreiben:
If (Not str Is Nothing) AndAlso str.length>0 Then ... EndIf
Hier ist die Unterscheidung wichtig, denn str.length lässt sich nur auswerten, wenn str nicht "nothing" ist.
Tags: DotNet , C++ , Operatoren