每个人都至少知道两个常见的 c# 习语,包括合并运算符:
单例:
return _staticField = _staticField ?? new SingletonConstructor();
和一个链式的:
notNullableResult = nullable1 ?? nullable2 ?? nullable3 ?? default(someType);
它是可读的、一致的、值得使用的并且在代码中是可识别的。
但是,不幸的是,仅此而已。有时它需要扩展或更改。有时我在看到特定案例时会使用它们——但我总是犹豫是否使用它,因为我不知道是否有其他程序员真的会轻松阅读它。
你还认识其他人吗?我希望有更具体的用法:例如Asp.net、EF、LINQ,任何东西——合并不仅可以接受,而且非常出色。
最佳答案
对我来说,它本身就足够好:
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/