5 Stimmen

if/else vs. ternärer Operator

Sind die beiden folgenden in Bezug auf die Auswertungszeit gleichwertig?

if(condition1)
{
    //code1
}
else
{
    //code2
}

condition1 ? code1 : code2

Oder sind sie nur syntaktisch unterschiedlich?

11voto

Groo Punkte 47623

Der Unterschied besteht darin, dass die letztgenannte Station verwendet werden kann, um einen Wert zurückgeben auf der Grundlage einer Bedingung.

Zum Beispiel, wenn Sie eine folgende Anweisung haben:

if (SomeCondition())
{
    text = "Yes";
}
else
{
    text = "No";
}

Mit einem ternären Operator schreiben Sie:

text = SomeCondition() ? "Yes" : "No";

Beachten Sie, dass das erste Beispiel führt eine Anweisung aus basierend auf einer Bedingung, während die zweite gibt einen Wert zurück auf der Grundlage einer Bedingung.

4voto

unwind Punkte 377331

Nun ... Im ersten Fall können Sie eine beliebige Menge oder Art (Ausdruck oder Anweisung) von Code anstelle von code1 y code2 . Im letzteren Fall muss es sich um gültige Ausdrücke handeln.

3voto

Faruz Punkte 9809

Ja & Ja.

Der einzige Vorteil ist die Einsparung von Codezeilen.

1voto

sharptooth Punkte 162790

Ja, es handelt sich um zwei verschiedene syntaktische Formen, die identisch funktionieren und vom Compiler höchstwahrscheinlich auch identischen Code ausgeben werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X