rud*_*nev 7 c# null-coalescing-operator
每个人都知道至少两个常见的c#习语,包括合并运算符:
单身人士:
return _staticField = _staticField ?? new SingletonConstructor();
Run Code Online (Sandbox Code Playgroud)
和一个链:
notNullableResult = nullable1 ?? nullable2 ?? nullable3 ?? default(someType);
Run Code Online (Sandbox Code Playgroud)
它可读,一致,值得在代码中使用和识别.
但不幸的是,这就是全部.有时它需要扩展或改变.有时我会在看到特定情况时使用它们 - 而且我总是犹豫使用它,因为我不知道是否有其他程序员会真正阅读它.
你认识其他人吗?我希望有更具体的用法:例如Asp.net,EF,LINQ,任何东西 - 合并不仅可以接受,而且非常显着.
对我来说,它转换为SQL本身就足够了:
from a in DB.Table
select new {
a.Id,
Val = a.One ?? a.Two ??a.Three
}
Run Code Online (Sandbox Code Playgroud)
这导致COALSCE数据库方面在大多数情况下使SQL 变得非常清晰,没有任何好的选择.我们正在使用Oracle,我宁愿不通过Nvl(Nvl(Nvl(Nvl(嵌套来阅读谢谢...我会接受我的COALSCE并运行它.
我也把它用于这样的属性,只是个人品味我想:
private string _str;
public string Str {
get { return _str ?? (_str = LoaderThingyMethod()); }
}
Run Code Online (Sandbox Code Playgroud)