我理解三元运算符的标准用法..
string message = hasError=="Y" ? "There's an error!" : "Everything seems fine...";
但是如何在子表达式中添加OR ..
if((hasError=="Y")||(seemsfine=="N")){
message="There's an error!";
}else{message="Everything seems fine...";
}
真心感谢任何帮助
由于
答案 0 :(得分:2)
你可以这样做
string message = hasError == "Y" || seemsfine == "N" ? "There's an error!" : "Everything seems fine...";
没有太大区别。这是因为C# 中的三元运算符 非常方便!
归根结底,这是整个表达(即hasError == "Y" || seemsfine == "N"
)的结果,而不是你有多少条件。如果你想要的话,你可以放置所有其他条件,只要整个表达式返回true
然后它将第一个元素(:
的左边)分配给变量,当整个表达式为{{ 1}}它将第二个元素(false
的右侧)赋给变量
三元运算符完全等效,if-else语句,其块只是将值赋给单个变量。
因此,
:
完全等同于
if (a1 == 0 || a2 > 5 || a3 <= -7)
b = 1;
else
b = 2;
如果更多比要分配的单个变量更多,则等效中断。
b = a1 == 0 || a2 > 5 || a3 <= -7 ? 1 : 2; //note that there is no bracket here, but it is equivalent to if-else statement with bracket
只要不妨碍代码的可读性,你甚至可以放置多个这样的三元运算符
if (a1 >= 0)
b = 2;
else
c = 3; //notice the variable difference, you cannot use ternary operator anymore.
相当于
b = a1 > 0 && a2 < 0 ? 1 : (a3 < 5 ? 2 : 3);
答案 1 :(得分:2)
初始表达式可以像您需要的那样简单或复杂,只要条件最终计算为单个布尔值,就像if
语句的第一行一样。
换句话说,这个:
if ((hasError == "Y") || (seemsfine == "N"))
message="There's an error!";
else
message="Everything seems fine...";
等同于:
string message = (hasError == "Y" || seemsfine == "N")
? "There's an error!"
: "Everything seems fine...";