c# - 常见的 C# 习语包括 coalesce ??运算符(operator)

标签 c# null-coalescing-operator

每个人都至少知道两个常见的 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/

相关文章:

c# - 在mvc中使用javascript隐藏和显示菜单

等效于 VB6 索引控件的 C# Windows 窗体

c# - 在wpf中描绘数学函数图表的方法

scala - 是否可以在不使用反射的Scala中实现 `??`(C#中的空合并运算符)?

c# - 右侧的三元/空合并运算符和赋值表达式?

c# - ??合并空字符串?

c# - 在不允许任意实现时使用接口(interface)隐藏实现细节

c# - 我似乎无法获得一个非常基本的 cookie 登录示例来使用 MVC5 和 OWIN

operators - 如何在 Haxe 中使用合并运算符?

C# Await、空合并、字符串插值无法编译