2010-08-24 4 views

Antwort

32

Im Wesentlichen ja.

Die Anweisung if erwartet einen booleschen Operator innerhalb der Klammern, um die Auswertung der nächsten Anweisung zu bestimmen.

Mit dem &&-Operator, wenn die erste boolesche Überprüfung Company !=null ist falsch, wird Anweisung false zurück, und führen Sie nicht die andere (Company.ID > 0).

Auch (als Referenz), mit dem ||-Operator wird True nach der ersten Aussage zurück, wenn es wahr ist und nicht die zweite auswerten.

+1

Referenz: http://msdn.microsoft.com/en-us/library/2a723cdk.aspx – cofiem

+0

Es wird wegen '&&' kurzgeschlossen, hat nichts mit dem 'if' zu tun. Ich denke, ich würde dies als vollständig bezeichnen, ansonsten +1. – Marc

+0

@Marc - aktualisiert mit genauer Erklärung, danke. – cjk

0

Kurze Antwort: Ja

Geringfügig längere Antwort: die Form der und Kurzschlussauswertung verwenden, so, wenn das Unternehmen null ist, dann wird es nicht die zweite Prüfung durchführen.

6

MSDN:

Die bedingte AND-Operator (& &) führt einen logischen UND-Operanden seiner bool, sondern wertet nur seinen zweiten Operanden, falls erforderlich.

3

Der & & Operator ist ein Operator sogenannte Kurzschluss. Er testet die Anweisungen von links nach rechts und beendet den Test, wenn einer der Tests fehlschlägt. Wenn Sie möchten, dass jeder Test ausgeführt wird, verwenden Sie den Operator &.

Weitere Daten können here

3

Ja finden, es tut. Sie können dies unter Beweis stellen, indem sie die Voraussetzungen für die Funktion Ersetzen ruft:

if (myfunc() && myfunc2()) 
{ 
    console.writeline("Success"); 
} 

... 

bool myfunc() 
{ 
    console.writeline("func1"); 
    return false; 
} 
bool myfunc2() 
{ 
    console.writeline("func2"); 
    return true; 
} 

Should Ausgabe:

func1 
Success