对于C#官方文档中的示例感到有些困惑,该示例说将空条件运算符与空coalescing运算符结合在一起可以分配默认值。
这是在MSDN上使用的示例:
first = person?.FirstName ?? "Unspecified";
但是在我看来,它与以下内容相同:
first = person.FirstName ?? "Unspecified";
我什至对它们进行了测试,并且两者的行为相同,所以我想知道我是否缺少某些东西,或者只是使用前者而多余?
答案 0 :(得分:8)
如果person
为空,则它们不相同。如果person
为null,则第二行将抛出NullReferenceException
。这就是?.
运算符的重点。