C#:使用?:函数运算符

本文关键字:运算符 函数 使用 | 更新日期: 2023-09-27 18:27:54

我想问一个关于?条件运算符。该函数的常见语法如下(可在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#中是否可行,如果可行,怎么做?

祝大家圣诞快乐!

C#:使用?:函数运算符

三元运算符应该返回一个值。因此,如果函数将返回相同类型的值,那么可以对函数使用三元运算符。

因此,如果去掉多余的引号,并假设您的两个函数返回的值与下面的情况相同,假设它们返回Action,那么这是好的。

Action a = (input < 0) ? RunScriptA() : RunScriptB();

或者简单地说:

var a = (input < 0) ? RunScriptA() : RunScriptB();

对这类事情使用委托。你可以这样做:

Action a = (input < 0) ? RunScriptA : RunScriptB; 
a();