码迷,mamicode.com
首页 > Windows程序 > 详细

C# 6.0:Null – Conditional 操作符

时间:2014-12-19 12:00:19      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   io   color   os   使用   sp   

在引入nameof操作符的同时,C# 6.0 还引入了Null-Conditional操作符。它使开发者可以检查object引用链中的null值。这个null-conditional 操作符写作"?.",会在引用链中任一个为null时返回null。这避免了对每一级进行null检查。

假设我们有一个class为Student,它有一个属性Address,同时这个属性的type是一个名为Address的Class。现在我们用下面的代码块来print它的HomeAddress。

bubuko.com,布布扣
if (student != null && student.Address != null)
{
    WriteLine(student.Address.HomeAddress);
}
else
{
    WriteLine("No Home Address");
}
View Code

我们可以看到,为了避免null-reference exception,我们不得不检查student是否为null,然后检查student.Address是否为null。

现在,上面的代码会通过使用null-conditional(?.)操作符来重写成:

WriteLine(student?.Address?.HomeAddress ?? "No Home Address");

是不是很帅?不必分别检查每个对象,使用“?.”我们可以同时检查整个引用链。任意一级为null,它都会返回null。下面的图片解释了“?.”是怎么工作的。

bubuko.com,布布扣

它也可以和方法协同工作,特别是当我们trigger event的时候。比如下面的代码

bubuko.com,布布扣
if (AddressChanged != null)
{
    AddressChanged (this, EventArgs.Empty);
}
View Code

使用?.我们可以这样写。

AddressChanged ?.Invoke(this, EventArgs.Empty)

 

C# 6.0:Null – Conditional 操作符

标签:style   blog   http   ar   io   color   os   使用   sp   

原文地址:http://www.cnblogs.com/yuwen/p/4173444.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!