Type? v = x?.y?.z;
if (v.HasValue) {
var value = v.GetValueOrDefault();
// code using value
}
据我所知,Type?表明Type是空的,但假设x,y以及z是当地居民有哪些呢x?.y?.z是什么意思?
Answers:
它是Null传播算子/ Null-Conditional算子?。C#6.0中提出的新功能
x?.y?.z 手段
x不为null,然后检查 y否则返回null,y,如果x不为null,则返回,z否则返回null。最终的返回值将是z或null。
如果没有此运算符x,则如果为null,则访问x.y将引发Null Reference Exception,Null-Conditional运算符有助于避免显式检查null。
这是避免Null引用异常的一种方法。
请参阅:了解C#中即将推出的语言功能
8-空条件运算符
有时,代码倾向于在null检查中淹没。使用空条件运算符可以仅在接收者不为空时访问成员和元素,否则提供空结果:
int? length = customers?.Length; // null if customers is null
??是非常不同的:x ?? y就像x != null ? x : y。而x?.y像x != null ? x.y : null。
z或null