Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 三元表达式可能吗?_C# - Fatal编程技术网

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();