我有这段代码:
bool value = false;
if(value)
{
Console.Write("true");
}
else
{
Console.Write("false");
}
我希望通过使用条件运算符来缩短它,但我找不到正确的语法。
bool value = false;
value ? Console.Write("true") : Console.Write("false"); // does not work
答案 0 :(得分:5)
将操作符放在Console.Write
Console.Write(value ? "true" : "false");
或者如果你真的想写这个值:
Console.Write(value);
如果要调用2个不同的方法,可以在一行中编写if语句:
if (value) Method1(); else Method2();
答案 1 :(得分:4)
bool value = false;
Console.Write(value ? "true" : "false");
如果方法返回一个值,那么
bool value = false;
var result = value ? Test1() : Test2();
private int Test1()
{
return 1;
}
private int Test2()
{
return 1;
}
答案 2 :(得分:1)
只需在上一个答案中添加一些精度即可。你不能这样做的原因:
value ? Console.Write("true") : Console.Write("false");
是因为:
条件运算符(?:) 返回两个值中的一个,具体取决于布尔表达式的值。
来源:MSDN
这里的关键字是“返回”。三元运算符并不完全替换if / else语句,而是用于赋值。您当然可以在三元运算中调用方法,只要它返回一个布尔值即可。三元运算符必须返回一些东西。