VB.NET bietet zwei logische Operatoren, mit denen Sie Ihre Programmierung… nun… logischer gestalten können. Die neuen Operatoren sind Und auch und OderElse und sie tragen viel zu den alten Operatoren And und Or bei.
AndAlso und OrElse verfügen über einige Eigenschaften, die Ihren Code auf eine Weise verbessern, die mit früheren VB-Versionen nicht übereinstimmt. Sie bieten Vorteile in zwei allgemeinen Kategorien:
AndAlso und OrElse sind ziemlich ähnlich wie And und Or, mit der Ausnahme, dass sie einen Ausdruck "kurzschließen", sobald das Ergebnis garantiert ist.
Angenommen, Sie codieren einen Test eines Berechnungsergebnisses wie folgt:
Der if-Ausdruck erzeugt in VB 6 einen Fehler "Division durch Null", da Value3 Null ist. (Weitere Informationen hierzu finden Sie im Quick-Tipp zum Teilen durch Null.) Es kann sein, dass Fälle, in denen Value3 auf Null gesetzt wird, sehr selten sind und nur auftreten, wenn Sie einen Urlaub in tausend Meilen Entfernung genießen, sodass Sie angerufen werden können zurück, um das Programm in einem Notfallmodus zu reparieren. (Hey! Es passiert!)
Lassen Sie uns das Programm mit AndAlso als .NET-Programm umkodieren und sehen, was passiert.
Nach dem Wechsel von And zu AndAlso funktioniert das Programm! Der Grund ist, dass der letzte Teil der zusammengesetzten If-Bedingung (Wert 2 \ Wert 3) nie tatsächlich ausgeführt wird. Wenn Sie AndAlso verwenden, weiß VB.NET, dass der Ausdruck nicht erfolgreich sein kann, wenn festgestellt wird, dass der erste Teil der Bedingung - a nicht größer als Value1 - false ist. VB.NET wertet den Ausdruck also nicht mehr genau dort aus. Ein ähnliches Beispiel könnte mit OrElse erstellt werden.
Diese Analyse zeigt auch, wie Sie Ihrem Code Effizienz verleihen können, indem Sie einen zusammengesetzten logischen Ausdruck korrekt anordnen. Wenn Sie den Ausdruck, der am wahrscheinlichsten falsch ist, bei AndAlso ganz links platzieren, können Sie verhindern, dass Ausführungszyklen zum Auswerten des Ausdrucks ganz rechts verwendet werden. In einem einzigen Test würde es nicht ausreichen, darüber nachzudenken. Wenn sich Ihr Test jedoch in einer Schleife befindet und millionenfach ausgeführt wird, kann dies einen großen Unterschied bewirken.
Wenn Sie diese beiden neuen logischen VB .NET-Operatoren kennen, können Sie sehr subtile Fehler vermeiden oder subtile Effizienzgewinne erzielen.