我想问一个关于?的问题?条件运算符。该函数的常用语法如下(在Microsoft站点上找到)
int input = Convert.ToInt32(Console.ReadLine());
string classify;
// if-else construction.
if (input < 0)
classify = "negative";
else
classify = "positive";
// ?: conditional operator.
classify = (input < 0) ? "negative" : "positive"; //<----
它通常在为变量赋值时使用,但我考虑过将其用于运行函数。
int input = Convert.ToInt32(Console.ReadLine());
string classify;
// if-else construction.
if (input < 0)
RunScriptA();
else
RunScriptB();
// ?: conditional operator.
(input < 0) ? RunScriptA()" : RunScriptB(); //<----
拥有这种功能可以节省许多代码。可悲的是,我尝试了这个想法时遇到语法错误。所以我想知道我想要的东西在C#中是否可行,如果是的话,怎么样?
每个人都有一个很棒的圣诞节!
答案 0 :(得分:3)
三元运算符应返回一个值。因此,如果您的函数将返回相同类型的值,那么您可以使用三元运算符来执行函数。
因此,如果删除多余的引号并假设您的两个函数返回的值与下面的情况相同,假设它们返回Action
那么它就是好的。
Action a = (input < 0) ? RunScriptA() : RunScriptB();
或简单地说:
var a = (input < 0) ? RunScriptA() : RunScriptB();
答案 1 :(得分:1)
使用委托代表这种东西。你可以这样做:
Action a = (input < 0) ? RunScriptA : RunScriptB;
a();