Stellen Sie sich diesen Fall vor, wo ich ein Objekt habe, dass ich eine Eigenschaft überprüfen muss. Das Objekt kann jedoch derzeit einen Nullwert haben.
Wie kann ich diese beiden Bedingungen in einer einzigen "if" Bedingung überprüfen?
Momentan muss ich so etwas tun:
%Vor%Ich möchte etwas wie das:
%Vor%Ich möchte die zweite Bedingung nur dann bewerten, wenn die erste richtig war.
Vielleicht vermisse ich etwas, und deshalb brauche ich deine Hilfe; -)
&&
ist ein Kurzschlusslogiktest - es wertet nur die rechte Seite aus, wenn die linke Seite wahr ist. Kontrast zu "a & amp; b", der immer beide Seiten bewertet (und bitweise "und")
Es sollte betont werden, dass die kurzgeschlossene Bewertung der & amp; & amp; in der if () ist absolut garantiert durch die Sprachstandards (C, C ++, Java und C #). So ist es seit der ersten Ausgabe von K & amp; Rs " C Programmiersprache ".
Es ist nicht etwas, worüber Sie sich Sorgen machen müssen "Implementiert mein Compiler das?". Wenn definitiv .
Dieser Code wird zuerst überprüfen, ob myObject nicht null ist, in dem Fall, dass es wahr ist, wird es die nächste Bedingung überprüfen, in dem Fall, dass es nicht wahr ist, wird es die nächste Bedingung nicht überprüfen und den Code nicht ausführen.
%Vor%Sie haben viele gute Antworten darauf, wie es geht. Ich möchte nur eine Warnung vorbringen, wie ich es nicht tun soll. Nicht den einzelnen Test für ID = pid in einem try-catch-Block umbrechen. Es ist verschwenderisch und würde die Einführung der Ausnahmeprüfung einbeziehen, um eine nicht außergewöhnliche Bedingung zu erfassen. Es ist so eine schlechte Idee, dass ich es nicht einmal mit einem Beispiel illustriere.
Ich denke, dass es für andere hilfreich sein kann, diese Frage in Zukunft zu betrachten. Wie gesagt, unter Verwendung von & amp; & amp; bietet die gewünschte Funktionalität. Aber, es sollte auch bemerkt werden, dass die Funktionalität, die Sie befürchteten, dass beide Seiten ungeachtet des Ergebnisses der ersten Bewertung bewertet würden, durch Verwendung von & amp; anstelle von & amp; & amp; Also:
%Vor%Auch in diesem Beispiel wollen Sie diesen Code NICHT. Ich wollte es einfach zur Konversation hinzufügen, da es Fälle geben kann (obwohl ich noch nie eine gefunden habe), wo dies die gewünschte Funktionalität ist, zum Beispiel:
%Vor%Ich denke, dass Sie in VB.net das Keyword andAlso als Alternative zu diesem Verhalten verwenden können. So etwas wie ...
Stimmt genau das gleiche, aber ich denke es gibt es als Alternative!
Bearbeiten: C # in VB.net oben geändert
Sie können & amp; um zwei Bedingungen auszuwerten, aber wenn Sie die zweite nur dann testen möchten, wenn das erste Element wahr ist, können Sie & amp; & amp;;.
verwendenAuf Portugiesisch heißt das: "AND com curto circuito".
%Vor%Wenn myObject falsch ist, können Sie myObject.Id nicht testen, da myObject null ist und Sie nicht auf eine Eigenschaft eines null-Objekts zugreifen können.
:::::::::::::::::::::
a b a & amp; & amp; b
wahr wahr wahr
richtig falsch falsch
falsch wahr falsch
falsch falsch falsch
:::::::::::::::::::::