7

null合体/三項演算子のような条件文に基づいてメソッドを実行する方法はありますか?

時々、コードに次のようなものがあります。

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 に答える