c#中具有布尔条件的三元

时间:2014-08-29 16:07:16

标签: c# ternary-operator

如果我要编写这段代码,它可以正常使用' if-else'布局。

if(isOn)
{
    i = 10;
}
else
{
    i = 20;
}

虽然我不确定如何使用三元运算符

转换它
        isOn = true ? i = 1 : i = 0;
  

错误:无法确定条件表达式的类型,因为   在' void'之间没有隐含的转换。和'无效'。

编辑: 答案= i = isOn ? 10 : 20;

是否可以使用方法执行此操作?

if(isOn)
{
    foo();
}
else
{
    bar();
}

7 个答案:

答案 0 :(得分:12)

请尝试以下方法。顺便说一句,它只适用于值赋值而非方法调用。

i = isOn ? 10 : 20;

<强>参考:

答案 1 :(得分:5)

你可以试试这个:

i = isOn? 10:20

MSDN说:

  

条件必须评估为真或假。如果条件为真,   评估 first_expression 并成为结果。如果条件是   false, second_expression 将被评估并成为结果。只有一个   评估两个表达式。

修改: -

如果要在条件运算符中调用void方法,则可以使用委托,否则无法对方法使用三元运算符。

如果你的方法正在返回一些东西,那么试试这样:

i = isOn ? foo() : bar();    //assuming both methods return int

答案 2 :(得分:4)

你在正确的轨道上走了一段路。 i = isOn ? 10 : 20;

10如果i isOn == true20将分配到i isOn == false

}

答案 3 :(得分:2)

尝试以下

i = isOn ? 10 :20

答案 4 :(得分:2)

尝试以下方法:

i = isOn ? 10 : 20

答案 5 :(得分:2)

这是一个可能有帮助的解释。您正在寻找的陈述是:

i = isOn ? 10 : 20;

这就是意思:

(result) = (test) ? (value if test is true) : (value if test is false);

答案 6 :(得分:-3)

你需要:

i = true ? 10 : 20;

true是你的条件。