Bitte demonstrieren Sie, wie der ternäre Operator mit einem regulären if / else-Block arbeitet. Beispiel:
%Vor%Genaue Duplikate: Wie benutze ich die ternärer Operator?
Der Unterschied zwischen der ternären Operation und if / else besteht darin, dass der ternäre Ausdruck eine Anweisung ist, die zu einem Wert ausgewertet wird, während if / else nicht.
istUm Ihr Beispiel zu verwenden, indem Sie von der Verwendung eines ternären Ausdrucks zu if / else wechseln, können Sie diese Anweisung verwenden:
%Vor%In diesem Fall ist Ihre Aussage jedoch äquivalent:
%Vor%Als ich neu in C ++ war, fand ich, dass es half, dieses Konstrukt wie folgt zu lesen:
%Vor%(Beachten Sie, dass dies kein gültiger Code ist. Es ist genau das, was ich selbst gelernt habe, um in meinem Kopf zu lesen.)
Ich war nie ein Fan des ternären Betreibers, weil ich dachte, es sei schwer zu lesen. Jon Skeet und sein Buch C # in Depth schlugen schließlich diesen alten Hund über den Kopf und ließen ihn untergehen. Jon sagte, und ich paraphrasiere, halte es für eine Frage.
Wert & gt; 100?
"ja": "nein"
Jetzt können die Blinden sehen.
Hoffe, das hilft dir, es zur zweiten Natur zu machen.
Wie auf der ?: Operator MSDN-Seite angegeben, " Der bedingte Operator (? :) gibt abhängig vom Wert eines booleschen Ausdrucks einen von zwei Werten zurück. "
Sie können also den ternären Operator verwenden, um mehr als nur boolesche Werte zurückzugeben:
%Vor%Stellen Sie sicher, dass Sie keine Typen in echten / falschen Teilen in Java mischen. Es erzeugt seltsame Ergebnisse: - (
Schlechtes Beispiel, weil Sie einfach
schreiben könnten %Vor%als:
%Vor%Darüber hinaus hat jeder andere bereits darauf geantwortet. Ich würde nicht empfehlen, ternäre Operatoren zu verwenden, um Bool-Werte zu setzen, da das, was Sie auswerten, bereits ein boolescher Wert ist.
Ich weiß, es war nur ein Beispiel, aber es war es wert, darauf hingewiesen zu werden.
Andere haben es bereits beantwortet, aber hier ist eine Sache, die Sie wirklich über die Verwendung von ternary wissen sollten, und damit meine ich, tu es nie.
Nehmen wir an, Sie haben ein Stück Code, das für jede mögliche Variation eines Wertes ein anderes Objekt zurückgeben soll, sagen wir vereinfachend eine ganze Zahl zwischen 1 und 5. Ihr Code sieht so aus:
%Vor%Es ist leicht zu verstehen, aber ein bisschen schwer. Da ternary nur eine andere Möglichkeit ist, eine if..else-Anweisung zu schreiben, die auf diese Weise refactored werden kann
%Vor%Es heißt verschachteltes Ternär . Es ist böse, jetzt, wo du davon weißt, bitte benutze es nie. Es mag scheinen, seine Verwendungen wie der oben genannte Fall zu haben, aber es ist sehr wahrscheinlich, dass Sie in echten Lebenssituationen es irgendwo verwenden müssen, wo es Lesbarkeit verliert (denken Sie das Ändern von Konfigurationen mit variabler Menge von Parametern und so).
Bonus-Sektor: Setzen Sie niemals Attributwerte in if (), sehen Sie sich einfach folgendes an: if(bool=true!=false) { .. }
Wie von MSDN zitiert (in einem früheren Post notiert)
string result = (Wert & gt; 100)? "Wert ist groß": "Wert ist klein";
Kann wie folgt gelesen werden:
Ist der Wert größer als 100? Wenn ja, ist string result "Wert ist groß", wenn nein, string ergibt sich "Wert ist klein".
Tags und Links java c c# ternary-operator