没有返回值的条件运算符

本文关键字:条件运算符 返回值 | 更新日期: 2023-09-27 17:58:01

我有这个代码:

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

没有返回值的条件运算符

将操作员放入Console.Write

Console.Write(value ? "true" : "false");

或者如果你真的想写值:

Console.Write(value);

如果你想调用两种不同的方法,你可以用一行写if语句:

if (value) Method1(); else Method2();
    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;
    }

只是在前面的答案上添加了一些精度。你不能这样做的原因:

value ? Console.Write("true") : Console.Write("false");

是因为:

条件运算符(?:)根据布尔表达式的值返回两个值之一。

来源:MSDN

这里的关键词是"return"。三元运算符并不完全替换if/else语句,它用于赋值。当然,您可以在三元运算中调用一个方法,只要它返回布尔值即可。三元运算符必须返回一些内容。