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 次 |
| 最近记录: |