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

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

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

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

  isOn = true ? i = 1 : i = 0; 

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

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

用方法可以做到这一点吗?

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

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

 i = isOn ? 10 : 20; 

参考:

  • ?:运算符(C#参考)

你可以试试这个:

 i = isOn? 10:20 

MSDN说:

条件必须评估为真或假。 如果condition为true,则计算first_expression并成为结果。 如果condition为false,则计算second_expression并成为结果。 只评估两个表达式中的一个。

编辑:-

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

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

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

你走在正确的轨道上,但稍微偏离了一点。 i = isOn ? 10 : 20;

如果isOn == true ,则将10分配给i如果isOn == true ,则将20分配给i

尝试以下方法

 i = isOn ? 10 :20 

请尝试以下方法:

 i = isOn ? 10 : 20 

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

 i = isOn ? 10 : 20; 

这就是这意味着:

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

你需要:

 i = true ? 10 : 20; 

你的病情是true