有没有办法基于条件语句运行方法,如null-coalescing / ternary运算符?
有时候,我的代码中有这样的东西:
if(Extender.GetSetting<string>("User") == null)
{
ConfigureApp();
}
else
{
loadUser();
}
有没有办法让我有类似的东西:
Extender.GetSettings<string>("User")?? ConfigureApp() : loadUser();
或 的
Extender.GetSettings<string>("User") == null ? ConfigureApp() : loadUser();
答案 0 :(得分:8)
这是可能的,但它不可读。 if
语句要好得多。
(Extender.GetSettings<string>("User") == null ? (Action)ConfigureApp : loadUser)();
答案 1 :(得分:3)
你可以写一行如下:
(Extender.GetSetting<string>("User") == null ? (Action)(()=>ConfigureApp()) : (Action)(()=>loadUser()) )();
但是,此代码添加到if
语句的唯一区别是由于委托的构造而导致性能降低。这不是一个好主意。
答案 2 :(得分: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");
}
}
答案 3 :(得分:1)
简单,快捷,简短。
if (Extender.GetSetting<string>("User") == null) ConfigureApp(); else loadUser();