2016-11-16 8 views
-3

Ich möchte folgende Bedingung machen, aber es ist falsch. Was kann getan werden, um es richtig zu machen?Verwendung von OR in ternären Operator

row["Total Serviceable Offers"].ToString() == "a" || "b" ? "0" : "c"; 

Können wir || haben? in ternärem Zustand?

+4

Nur nicht ... Die lange Hand-Version wird mit @Liam viel besser lesbar – Liam

+0

vereinbart werden. Sobald du eine zweite Bedingung hineinwirfst, vereitelt du irgendwie den Zweck der Verwendung von Kurzschrift für die Einfachheit. –

+0

@DangerZone Ich stimme der Hälfte zu, ich habe das Gefühl, dass ein ternäres System in Ordnung ist, wenn zwei Bedingungen als "oder" dargestellt werden, aber wenn Sie ein "else" verwenden, dann verliert es seinen Zweck –

Antwort

3
string theRow = row["Total Serviceable Offers"].ToString(); 
(theRow == "a" || theRow == "b") ? "0" : "c"; 
0

Ich lief int f = (g > 0 || h > 0) ? j : k; in einem Testprogramm, und es Fehler nicht, so kann man ziemlich ja.

Seien Sie vorsichtig mit der Logik, viel Glück.

1

Sie sind für diese Syntax suchen

(row["Total Serviceable Offers"].ToString() == "a" || row["Total Serviceable Offers"].ToString() == "b") ? "0" : "c"; 

Aber ich würde mit den kurzen Ansatz bevorzugen Contains()

new[]{"a","b"}.Contains(row["Total Serviceable Offers"].ToString()) ? "0" : "c"; 
3

Können wir || innerhalb ternären Zustand haben?

Ja, Sie können. Aber in der Art, wie Sie es getan haben, ist die || zwischen
row["Total Serviceable Offers"].ToString() == "a", ein boolescher Ausdruck, und "b", ein String-Ausdruck. Deshalb kompiliert dein Code nicht.

Sie können es in Contains oder Any Ausdruck ändern, oder eine Hilfsmethode erstellen, wenn es mehr Vergleiche gibt, als was Ihr Codeausschnitt zeigt.

Hier sind einige Möglichkeiten, um Ihren Ausdruck zu umschreiben:

new[]{"a", "b"}.Contains(row["Total Serviceable Offers"].ToString()) ? "0" : "c"; 
new[]{"a", "b"}.Any(s => s == row["Total Serviceable Offers"].ToString()) ? "0" : "c"; 
IsAorB(row["Total Serviceable Offers"].ToString()) ? "0" : "c"; 

... 

bool IsAorB(string s) { 
    return s == "a" || s == "b"; 
} 
Verwandte Themen