7

有没有办法运行基于条件语句的方法,如空合并/三元运算符?

有时,我的代码中有这样的内容:

if(Extender.GetSetting<string>("User") == null)
{
     ConfigureApp();
}
else
{
     loadUser();
}

有没有办法让我有类似的东西:

Extender.GetSettings<string>("User")?? ConfigureApp() : loadUser();

或者

Extender.GetSettings<string>("User") == null ? ConfigureApp() : loadUser();
4

4 回答 4

8

这是可能的,但它不可读。if陈述要好得多。

(Extender.GetSettings<string>("User") == null ? (Action)ConfigureApp : loadUser)();
于 2012-09-17T13:52:47.280 回答
3

你可以写一行:

 (Extender.GetSetting<string>("User") == null ? (Action)(()=>ConfigureApp()) : (Action)(()=>loadUser()) )();

但是,此代码添加到您的if语句中的唯一区别是由于委托的构造而导致的性能较慢。这不是一个好主意。

于 2012-09-17T13:53:06.157 回答
2

简单、快速、快捷的方式。

if (Extender.GetSetting<string>("User") == null) ConfigureApp(); else loadUser();
于 2012-09-17T14:14:41.767 回答
1

可能是这样的:

class Program {
    static void Main(string[] args) {
        String s = "";
        Launcher(s == "user1", A1, A2);
        s = "user1";
        Launcher(s == "user1", A1, A2);
    }

    static void Launcher(Boolean b, Action a1, Action a2) {
        if (b) { a1(); } else { a2(); }
    }

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

    static void A2() {
        Console.WriteLine("action 2");
    }
}
于 2012-09-17T13:54:37.530 回答