我想做出以下的條件,但它的錯誤。可以做些什麼來使其正確?在三元運算符內使用
row["Total Serviceable Offers"].ToString() == "a" || "b" ? "0" : "c";
我們能否||在三元狀態?
我想做出以下的條件,但它的錯誤。可以做些什麼來使其正確?在三元運算符內使用
row["Total Serviceable Offers"].ToString() == "a" || "b" ? "0" : "c";
我們能否||在三元狀態?
string theRow = row["Total Serviceable Offers"].ToString();
(theRow == "a" || theRow == "b") ? "0" : "c";
我剛剛在一個測試程序中運行int f = (g > 0 || h > 0) ? j : k;
,它沒有錯誤,所以幾乎可以。
只要小心邏輯,祝你好運。
您正在尋找這樣的語法
(row["Total Serviceable Offers"].ToString() == "a" || row["Total Serviceable Offers"].ToString() == "b") ? "0" : "c";
不過我更傾向於短期的做法與Contains()
new[]{"a","b"}.Contains(row["Total Serviceable Offers"].ToString()) ? "0" : "c";
我們能否
||
三元條件裏面?
是的,可以。但是,您在row["Total Serviceable Offers"].ToString() == "a"
(一個布爾表達式)和"b"
(這是一個字符串表達式)之間執行的方式爲||
。這就是爲什麼你的代碼不能編譯。
您可以將其更改爲Contains
或Any
表達式,或者如果比您的代碼片段顯示的比較數多,則可以創建一個輔助方法。
以下幾種方法來重寫你的表達:
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";
}
只是不要......長手版本將更具可讀性 – Liam
與@Liam同意。只要你在那裏拋出第二個條件,你就有點擊敗了使用簡寫的目的。 –
@DangerZone我有一半同意,如果你有兩個條件表示爲'or',我感覺好像三元組沒有問題,但是如果你使用'else',那麼它失去了它的目的 –