Was ist der Zweck der Verwendung von ternären Operatoren anstelle von IF THEN? [geschlossen]

8

warum machen die Dinge komplexer? Warum tun Sie das:

%Vor%

statt dessen:

%Vor%     
l--''''''---------'''''''''''' 11.10.2010, 20:49
quelle

5 Antworten

32

Angenommen, Sie möchten entweder null oder txtNumerator.Text an eine Methode übergeben. Wie würden Sie das tun?

Sie könnten sagen:

%Vor%

Oder Sie könnten sagen

%Vor%

Letzteres ist kürzer und einfacher zu lesen.

Der größere Punkt hier ist, dass -Anweisungen nützlich für ihre Nebenwirkungen sind und Ausdrücke sind nützlich für ihre Werte . Wenn Sie kontrollieren wollen, welche von zwei Nebenwirkungen passiert, dann verwenden Sie eine "if" -Anweisung. Wenn Sie steuern möchten, welcher Wert aus zwei Möglichkeiten ausgewählt wird, sollten Sie einen bedingten Ausdruck verwenden.

UPDATE:

Jenny fragt, warum tue ich das nicht einfach?

%Vor%

Das ist in Ordnung, wenn es nur eine Bedingung zu überprüfen gibt. Aber was, wenn es, sagen wir, vier gibt? Jetzt gibt es sechzehn Möglichkeiten und das Schreiben der "if" -Anweisung dafür wird unordentlich, um es gelinde auszudrücken:

%Vor%

Stattdessen können Sie einfach sagen:

%Vor%     
Eric Lippert 11.10.2010, 20:52
quelle
8

Es ist ein Ausdruck, sodass Sie das Ergebnis direkt in einer Zuweisung oder einem Funktionsaufruf verwenden können, ohne den Kontext, in dem Sie es verwenden, duplizieren zu müssen. Das macht viele Nutzungsszenarien deutlich sauberer beim Schreiben und Lesen. Zum Beispiel:

%Vor%

versus

%Vor%     
mquander 11.10.2010 20:53
quelle
2

Es gibt viele Richtlinien, die behaupten, den ternären Operator nicht zu verwenden. Allerdings können Sie davon ausgehen, dass alle Sprachfunktionen außer goto und if überflüssig sind. Ich benutze es, wenn ich eine Vielzahl von if dann enses habe.

    
rerun 11.10.2010 20:54
quelle
2

Es macht den Code in einigen Menschen besser lesbar, viele Konstrukte in der Sprache sind syntaktischer Zucker (denke an do..while, while..do, und für (..)) und am Ende der Am Tag wählst du, was für dich (und dein Team) funktioniert.

Ich denke zum Beispiel, dass der obige Code mit einer Erweiterungsmethode implementiert werden sollte:

%Vor%     
Shay Erlichmen 11.10.2010 21:01
quelle
1

Wenn Sie mit dem Konstrukt if-then gehen, erhalten Sie zwei Zuweisungen an dieselbe Variable in zwei separaten Blöcken. Die ternäre Form hat nur eine Zuordnung. Es ist also nicht notwendig, einen zweiten Block zu betrachten, um zu überprüfen, ob beide Blöcke eine Zuweisung zu derselben Variablen ausführen. In dieser Hinsicht denke ich, dass die ternäre Form besser liest.

Wenn andererseits C # wie Ruby funktioniert und wenn ein Ausdruck ist, dann können Sie auf den ternären Operator verzichten und in diesem Fall if-else verwenden:

%Vor%

was ich bevorzugen würde, weil dann die unterschiedliche Syntax von?: gelöscht werden könnte.

    
Nathan Hughes 11.10.2010 21:18
quelle

Tags und Links