每个人都知道至少两个常见的 c# 习语,包括合并运算符:
单例:
return _staticField = _staticField ?? new SingletonConstructor();
和一个链式:
notNullableResult = nullable1 ?? nullable2 ?? nullable3 ?? default(someType);
它在代码中可读、一致、值得使用和识别。
但是,不幸的是,这就是全部。有时它需要扩展或改变。有时当我看到一个特定的案例时我会使用它们 - 而且我总是犹豫是否使用它,因为我不知道是否有其他程序员真的会很容易阅读它。
你认识其他人吗?我希望有更具体的用法:例如Asp.net、EF、LINQ,任何东西 - 合并不仅是可以接受的,而且是非凡的。
最佳答案
对我来说,它本身转换为 SQL 的地方就足够了:
from a in DB.Table
select new {
a.Id,
Val = a.One ?? a.Two ??a.Three
}
在大多数情况下,这导致数据库端的
COALSCE
使 非常干净 SQL,只是没有任何好的选择。我们正在使用 Oracle,我宁愿不阅读嵌套的 Nvl(Nvl(Nvl(Nvl(
,谢谢...我将使用我的 COALSCE
并运行它。我也将它用于这样的属性,我猜只是个人品味:
private string _str;
public string Str {
get { return _str ?? (_str = LoaderThingyMethod()); }
}
关于c# - 常见的 C# 习语,包括 coalesce ??运算符(operator),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2330410/