条件运算符没有返回值

时间:2016-07-20 08:56:57

标签: c# if-statement

我有这段代码:

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

3 个答案:

答案 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语句,而是用于赋值。您当然可以在三元运算中调用方法,只要它返回一个布尔值即可。三元运算符必须返回一些东西。