有没有办法运行基于条件语句的方法,如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();

#1楼 票数:8 已采纳

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

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

#2楼 票数:3

你可以写一行如下:

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

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

#3楼 票数: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");
    }
}

#4楼 票数:1

简单,快速和简短的方式。

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

  ask by rtuner translate from so

未解决问题?本站智能推荐:

5回复

如何返回方法C#

我需要在运算符函数中返回一个方法。 我还需要对乘法器,乘法和除法运算符/函数执行此操作。 谢谢
4回复

C#中操作员方法的方法名称

有没有人有一个详尽的C#/ CLR给运营商的名单? (也许我的睡眠不足,但我似乎无法在Google上找到它)例如op_Addition,op_Subtraction。 此外,这些在其他文化中会有什么不同吗? 我正在尝试创建一个可以添加/减去两个对象的类,我已经完成了所有原语 - 我只需要
3回复

达到特定整数除法时的调用方法

我正在编写视频游戏,在其中,我想调用一种方法,该方法可以为每获得2,000分增加玩家奖励寿命。 我不知道该用什么运算符。 我什至不确定我是否正确地问了这个问题。 基本上,当玩家得分2,000pt,4,000pt,6,000pt等时,我想通过调用方法来给予他/她额外的生活。 我已经创建了
5回复

对属性或调用方法使用空合并

可以使用?? 在以下情况下运行: 这里的问题是不可能将str object collection["NoRepeate"]分配给str和collection["NoRepeate"].ToString()在其值为null时引发异常。 我正在使用条件运算符?: :: 但是问题在于重复
2回复

C#方法(“项目一”|“项目二”)含义/执行

我之前看过以下类型的代码: 它到底是做什么的? 在我的代码中,我有。 我希望它发生的原因是,它检查的是角色“管理员”或“主持人”,但是当用户只是在“管理员”中时,它返回false。 我不确定在执行此操作时会调用什么,但我想知道它的确切功能以及可以使用类似方法的理由/时间。
1回复

比较通用方法C#中的两个值

我认为我的代码可以自我解释我想要实现的目标: 它给我错误: 我需要一个可以比较字符串,Int,Double和chars的方法。 注意:排除要为>或<check传递字符串的条件,否则将为“包含”校验发送Int
10回复

是否可以定义扩展运算符方法?

是否可以定义同时是运算符的扩展方法? 我想要一个固定的类添加使用实际上无法应用的已知运算符的可能性。 对于这种特殊情况,我想这样做: 而且我不想为所有代码传播类型转换。 我知道我可以在字符串上创建包装类并定义该运算符,但我想知道这种事情是否可以避免使用 MySpecialString 搜索和替换每个
1回复

如何使用隐式运算符方法获取“查找用法”?

我从不喜欢隐式运算符(更喜欢扩展方法),因为在代码中发生转换/转换时很难直观地看到它们。 想象一下,如果你有如下例子: 上面的隐式运算符可以帮助您将Xml格式的交易转换/转换为Deal Object。 通常当您右键单击某个方法时,可以在其上使用“查找用法”(或Alt + F7),这非