Die Reihenfolge der Ausführung der Bedingungen in C# If-Anweisung
Gibt es zwei if-Anweisungen unten, hat mehrere Bedingungen mit logischen Operatoren. Logisch ist beides das gleiche, aber die Reihenfolge der Prüfung unterscheidet. Die erste funktioniert und die zweite ausfällt.
Bezog ich mich MSDN zu überprüfen, ob die Reihenfolge der Ausführung der festgelegten Voraussetzungen; aber ich konnte Sie nicht finden.
Betrachten mehrere check-Bedingung, hat &&
als logischen operator. Ist es garantiert, dass Sie immer überprüfen, die erste Bedingung und wenn diese nicht erfüllt wird die zweite Bedingung wird nicht überprüft werden?
Den ich Ansatz 1 und es funktioniert gut. Suchen nach einem MSDN-Referenz substantiaing Einsatz.
UPDATE
Finden "short-circuit" Auswertung
CODE
List<string> employees = null;
if (employees != null && employees.Count > 0)
{
string theEmployee = employees[0];
}
if (employees.Count > 0 && employees != null)
{
string theEmployee = employees[0];
}
InformationsquelleAutor Lijo | 2013-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
&Amp;& und | | - Operatoren Kurzschluss. Das heißt:
1) Wenn && wertet seine erste operand false, wird es nicht bewerten seine zweite operand ist.
2), Wenn || wertet seine erste operand wahr ist, es nicht zu bewerten seine zweite operand ist.
Dies können Sie tun, null-check && tun Sie etwas mit dem Objekt, als wenn es nicht null, der zweite operand wird nicht ausgewertet.
InformationsquelleAutor Patashu
Sollten Sie verwenden:
&&
wird Kurzschluss undemployees.Count
werden nicht execucted wennemployees
istnull
.In Ihrem zweiten Beispiel, die Anwendung löst eine Ausnahme aus, wenn
employees
istnull
wenn Sie versuchen, umCount
Elemente in der Auflistung.http://msdn.microsoft.com/en-us/library/2a723cdk(v=vs. 71).aspx
InformationsquelleAutor Darren
Werden die Bedingungen geprüft Links nach rechts. Die
&&
Betreiber nur bewerten das Recht Zustand, wenn die linke Bedingung wahr ist.Abschnitt 5.3.3.24 der Sprache C# - Spezifikation besagt:
So macht es klar, dass expr-erste wird immer ausgewertet und bei true dann und nur dann, expr-zweite wird auch ausgewertet.
InformationsquelleAutor John Willemse
Links nach rechts, während der Ausdruck ist noch fraglich.
InformationsquelleAutor G.Y
Den bedingten-UND-operator (&&) führt eine logische-UND von seiner bool Operanden, sondern nur wertet seinen zweiten Operanden, falls erforderlich.
InformationsquelleAutor Frank Rem
&Amp;& und | | - Operatoren werden Häufig verwendet, um zu überprüfen, für die Objekt-Bedingungen.
1) "&&" Bedingung " seine erste operand false, wird es nicht bewerten seine zweite operand ist. Wenn es true zurückgibt, ist die zweite Bedingung. Wenn sich die zweite Bedingung true ist, nur dann wird true zurückgegeben. So && kann verwendet werden, um sicherzustellen, dass alle Bedingungen erfüllt sind, als gültig.
2) Das "||" Bedingung " seine erste operand wahr ist, es nicht zu bewerten seine zweite operand ist. Wenn die erste Bedingung als false ausgewertet, dann erst wird es bewerten zu zweite Bedingung. Wenn Sie so zufrieden ist, dann wird true zurückgegeben. Andernfalls "false".
InformationsquelleAutor Chirag
Kurze Antwort ist ja.
InformationsquelleAutor yclkvnc
Siehe z.B. in diesem MSDN-Seite für && beschreibt den short-circuit-evaluation.
Können Sie überprüfen, zu beweisen oder Ausführung der Reihenfolge, wie diese:
Bekommen Sie 3 in beiden Fällen - das zeigt, dass in beiden Fällen muss der Kurzschluss-Verhalten stattfindet. Auf der anderen Seite, könnten Sie die '&' oder '|', bzw, der logische operator, um das zu verhindern. So erhalten Sie ein Ergebnis von 4, weil beide Bedingungen ausgewertet wurden.
InformationsquelleAutor JeffRSon