【发布时间】:2011-01-20 18:51:39
【问题描述】:
每个人都知道至少两个常见的 C# 习语,包括合并运算符:
单身人士:
return _staticField = _staticField ?? new SingletonConstructor();
还有一个链条:
notNullableResult = nullable1 ?? nullable2 ?? nullable3 ?? default(someType);
它在代码中具有可读性、一致性、值得使用和可识别性。
但是,不幸的是,仅此而已。有时它需要扩展或改变。有时当我看到一个特殊的案例时我会使用它们——而且我总是犹豫使用它,因为我不知道是否有任何其他程序员真的会很容易地阅读它。
你认识其他人吗?我希望有更具体的用法:例如Asp.net, EF, LINQ, 任何东西——其中的合并不仅是可以接受的,而且是非凡的。
【问题讨论】:
-
在我看来,null 合并运算符的所有使用都只是您的“链一”的特例。
-
不过,所有的情况或多或少都是特殊的或一般的。对我来说,编程的艺术就是平衡和感受不同。 coalesce 是“if”语句的一个特例,不是吗?和 switch - case 是一个特殊的,那么如何 - 删除它们?
-
这不是你实现延迟实例化单例的方式。即使您只是为了简洁起见而省略了
lock块,它仍然只会混淆代码。 -
我不需要总是一个懒惰的单身:) 生活有时很悲伤
-
你的意思是线程安全,而不是懒惰,我猜?
标签: c# null-coalescing-operator