C# 三元表达式可能吗?
我不确定以下语句是否可以写成一行(即三元形式)C# 三元表达式可能吗?,c#,C#,我不确定以下语句是否可以写成一行(即三元形式) FunctionA和FunctionB都是void类型。否。条件运算符仅对非void表达式有效。关键是计算两个表达式中的一个,并以此作为结果 基本上:编写if语句。这是执行一个或另一个动作的惯用方式 您可以编写如下扩展方法: // For demonstration purposes only. Please don't use in real life. public static void Conditional(this bool resul
FunctionA和FunctionB都是void类型。否。条件运算符仅对非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();
}
然后:
。。。但我强烈建议你不要这样做
如果以下语句可以写为一行
当然可以:
if
-else
表单可以运行得更快。@AlvinWong:可能吧。更重要的是,它会更干净。@JonSkeet哇,扩展方法的使用真是可怕。有条件地执行一个或另一个方法的布尔方法。。。。潘多拉召唤;她想要回她的邪恶。重点是评估两个表达中的一个,这是许多其他语言的结果,但他们仍然允许在无效上下文中调用。我没有说答案是错误的,我说解释不是一个。我不知道是什么原因,即使在读了你的答案之后。
// 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);
if (A == B) FunctionA(); else FunctionB();