三元表达可能吗?

时间:2012-10-18 16:33:17

标签: c#

我不确定以下陈述是否可以写为一行(即三元形式)。

if (A == B)
    FunctionA();
else 
    FunctionB();

FunctionA和FunctionB都是void类型。

2 个答案:

答案 0 :(得分:19)

没有。条件运算符仅对非void 表达式有效。关键是要评估两个表达式中的一个,并将其作为结果。

基本上:写if语句。这是执行一个动作或其他动作的惯用方式。

可以编写这样的扩展方法:

// For demonstration purposes only. Please don't use in real life.
public static void Conditional(this bool result,
                               Action trueAction,
                               Action falseAction)
{
    Action action = result ? trueAction : falseAction;
    action();
}

然后:

(A == B).Conditional(FunctionA, FunctionB);

...但我强烈建议你不要。

答案 1 :(得分:11)

  

如果以下语句可以写为一行

不确定

if (A == B) FunctionA(); else FunctionB();