C#中的三元运算符

Pau*_*els 9 .net c# methods ternary-operator

使用三元运算符,可以执行以下操作(假设Func1()和Func2()返回int:

int x = (x == y) ? Func1() : Func2();
Run Code Online (Sandbox Code Playgroud)

但是,有没有办法做同样的事情,而不返回值?例如,类似(假设Func1()和Func2()返回void):

(x == y) ? Func1() : Func2();
Run Code Online (Sandbox Code Playgroud)

我意识到这可以使用if语句来完成,我只是想知道是否有办法像这样做.

小智 11

很奇怪,但你可以做到

class Program
{
    private delegate void F();

    static void Main(string[] args)
    {
        ((1 == 1) ? new F(f1) : new F(f2))();
    }

    static void f1()
    {
        Console.WriteLine("1");
    }

    static void f2()
    { 
        Console.WriteLine("2");
    }
}
Run Code Online (Sandbox Code Playgroud)