warum machen die Dinge komplexer? Warum tun Sie das:
%Vor%statt dessen:
%Vor%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%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%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%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.
Tags und Links c#