C#:使用OR(短路版本)进行分配

时间:2016-06-28 10:49:47

标签: c# lua

Lua 中,有一个很好的功能可以快速检查语句的结果是否为nil,并使用短路版作出反应对于这种情况;例如:

text = GetTextFromUser() or "default text"

转换为将GetTextFromUser()的返回值分配给text,如果GetTextFromUser()返回nil,则将"default text"分配给text < / p>

这对于使用or运算符进行短路评估来进行分配基本上是一个很好的技巧。

我想知道c#||运营商是否也有这样的能力。如果不是,实现相同行为的最短途径是什么?三元运算符?如果声明?

2 个答案:

答案 0 :(得分:6)

可能是null-coalescing运算符? https://msdn.microsoft.com/en-ie/library/ms173224.aspx

string a;
string b = a ?? "default value";

所以你的例子会变成:

string text = GetTextFromUser() ?? "default text"

答案 1 :(得分:0)

如果条件失败,您可以创建一个简单的方法来返回默认值

string GetValueOrDefault(string value, Func<bool, string> condition,
    string defaultValue = "") => condition(value) ? value: defaultValue;

用法

var text = GetValueOrDefault(GetTextFromUser(), o => o != nil, "default text");

P.S。:TODO通用版。