Ich sage, dass für ein C#-Logik-AND ( &&
), die zweite, dass ein Ausdruck falsch ist, da sie alle wahr sein müssen, damit der Ausdruck wahr ist, bricht der Compiler die Auswertung sofort ab.
&& Operator (C#-Referenz)
Der Operator für bedingte UND-Verknüpfungen (&&) führt eine logische UND-Verknüpfung seiner boolschen Operanden durch, wertet aber nur seinen zweiten Operanden aus, wenn dies erforderlich ist.
Im Gegensatz zu einem Logik-AND ist das Logik-OR ( ||
) muss nur ein einziger Ausdruck von allen wahr sein, damit der gesamte Ausdruck wahr ist. Anstatt also einen Kurzschluss über eine false
Bewertung, die ||
Operator veranlasst den Compiler, einen Kurzschluss über eine wahre Auswertung zu machen.
|| Operator (C#-Referenz)
Nun, das ist das Verhalten des C#-Compilers, aber das bedeutet nicht, dass jeder Compiler so arbeitet, denn in VB.NET gibt es zwei logische UND-Operatoren ( And
, AndAlso
), und zwei logische ODER-Operatoren ( Or
, OrElse
). Die Website And
Operator, der sowohl für bitweise als auch für logische Verknüpfungen verwendet wird, macht keinen Kurzschluss, wenn der erste Ausdruck falsch ist und wertet den anderen trotzdem aus, während AndAlso
schliesst die Auswertung kurz, wenn der erste logische Ausdruck falsch ist. Das ist dasselbe mit Or
y OrElse
, donde Or
keinen Kurzschluss verursacht, und OrElse
tut.
Und Operator (Visual Basic)
Führt eine logische Konjunktion mit zwei booleschen Ausdrücken oder eine bitweise Konjunktion mit zwei numerischen Ausdrücken durch.
AndAlso-Operator (Visual Basic)
Führt eine kurzschließende logische Konjunktion mit zwei Ausdrücken durch.
Oder-Operator (Visual Basic)
Führt eine logische Disjunktion bei zwei booleschen Ausdrücken oder eine bitweise Disjunktion bei zwei numerischen Ausdrücken durch.
OrElse-Operator (Visual Basic)
Führt einen Kurzschluss inklusive logischer Disjunktion an zwei Ausdrücken durch.
Kurz gesagt, ich würde sagen, dass dies vom Compiler abhängt, mit dem Sie arbeiten. Wie für C#, es tut Kurzschluss.