tko*_*hla 69 c# pattern-matching
Type? v = x?.y?.z;
if (v.HasValue) {
var value = v.GetValueOrDefault();
// code using value
}
Run Code Online (Sandbox Code Playgroud)
据我所知,Type?
表明Type
是空的,但假设x
,y
以及z
是当地居民,这是什么x?.y?.z
意思?
Str*_*ior 98
请注意,此语言功能仅适用于C#6及更高版本.
它实际上相当于:
x == null ? null
: x.y == null ? null
: x.y.z
Run Code Online (Sandbox Code Playgroud)
换句话说,这是一种"安全"的方式x.y.z
,沿途的任何属性都可能为空.
还有一个空合并运算符(??),它提供了替换值null
.
Hab*_*bib 29
它是Null传播的运算符/ Null-Conditional运算符?C#6.0中新提出的新功能
x?.y?.z
手段
x
为null,然后检查 y
否则返回null,y
,如果它不为null则返回z
否则返回null.最终的回报价值是z
或null
.
如果没有此运算符if x
为null,则访问x.y
将引发Null引用异常,Null-Conditional运算符有助于避免显式检查null.
这是一种避免Null引用异常的方法.
请参阅:了解C#中即将推出的语言功能
8 - 空条件运算符
有时代码往往会在null检查中淹没一点.空条件运算符只允许您在接收方不为null时访问成员和元素,否则提供null结果:
int? length = customers?.Length; // null if customers is null
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5260 次 |
最近记录: |