在 Lua 中,有一个很好的功能可以快速检查语句的结果是否为nil
,并使用短路版或作出反应对于这种情况;例如:
text = GetTextFromUser() or "default text"
转换为将GetTextFromUser()
的返回值分配给text
,如果GetTextFromUser()
返回nil
,则将"default text"
分配给text
< / p>
这对于使用or
运算符进行短路评估来进行分配基本上是一个很好的技巧。
我想知道c#||
运营商是否也有这样的能力。如果不是,实现相同行为的最短途径是什么?三元运算符?如果声明?
答案 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通用版。