Mit dem ternären operator für mehrere Vorgänge
Wie kann ich mit dem ternären ? :
Bedingung für die Ausführung mehrerer Operationen, wenn der Ausdruck true/false?
wbsource = (exp) ? (Do one thing) : (Do second thing)
wbsource = (exp) ? (Do one thing) (Do second thing) : (Do second thing)
ZB:
Warum kann ich nicht durchführen, drei Operationen zwischen ?
und :
filename = (fp!=null) ? fp; Properties.Settings.Default.filename=fp; Properties.Settings.Default.Save; : Properties.Settings.Default.file;
Mit einfachen if-Bedingung, ich hätte geschrieben, in einer einfachen Weise, wie:
if(fp!null)
{
filename = fp;
Properties.Settings.Default.filename;
Properties.Settings.Default.Save();
}
else
{
filename = Properties.Settings.Default.file
}
Was ist eine süße kurze Weg zu schreiben, mit den oben genannten ternären operator?
Wie ich die if / else-Weg, in diesem Fall - viel einfacher zu Lesen, IMHO...
Unär bedeutet "mit einem Operanden".
Unär bedeutet "mit einem Operanden".
? :
hat drei Operanden - es ist ein ternary - operator, und sein name ist der bedingte operator.InformationsquelleAutor user1240679 | 2012-03-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Da diese Operanden, die Ausdrücke. Jeder Ausdruck ist ein Wert; Sie möchten mehrere Aussagen. Von Eric Lippert ' s blog-post über
foreach
vsForEach
:Sollten Sie unbedingt dieses schreiben mit einem
if
block. Es ist klarer.Wenn Sie wirklich, wirklich wollen, verwenden Sie die bedingte operator für diese, könnten Sie schreiben:
InformationsquelleAutor Jon Skeet
Den conditional-operator, der ein ternärer operator (nicht ein unärer operator), ist nicht ein Ersatz für ein
if
- Anweisung. Es ist ein operator, der gibt zwei Ergebnisse. Während Sie können diese Kette zu etwas Umfang:Wird das etwas schwer zu Lesen. Weiter -, Sie versuchen, rufen Sie die
Save()
Funktion, die kein Ergebnis zurückliefert, also kann es nicht mit diesem operator.InformationsquelleAutor Jon B
Wenn Sie wirklich, wirklich wollen, könnten Sie eine Funktion verwenden, die Nebenwirkungen:
Aber wer unterhält der code wird Euch nicht danken.
InformationsquelleAutor Joe
Wenn dies
c
Sie wären OK danke um die "Komma-operator":Hier
b
werden auf 6 gesetzt,somemethod
aufgerufen wird und danna
auf 1 gesetzt ist.Zum Glück, das war ein Merkmal, das wurde nicht portiert, verwenden Sie
if..else
es ist viel klarer.InformationsquelleAutor weston
Kurze Antwort, verwenden Sie einen
if
block, das ist die einzige vernünftige Sache zu tun.Andere Antwort, für die schmutzige, stinkende geisteskranke einzelnen.
InformationsquelleAutor Jodrell