http://www.piipi.cn/view/294/1.aspx
第四个
4. 安全的null延迟赋值操作符
我很想看到一种安全地访问一个值为null的对象的属性的表达式,表达式可能形如Object.Property.Property.Value
比如我要访问Customer?.FirstName,但是Customer是null,此时Customer?.FirstName会返回null而不是抛出个NullReferenceException
再看看下面的代码,你就会知道怎么用了:
1、//如果不是客户或命令无效,这将抛出一个像往常一样空引用异常
2、int orderNumber = Customer.Order.OrderNumber;
3、//这将无法编译,因为它需要一个空的返回类型
4、int orderNumber = Customer.Order?.OrderNumber;
5、//这将返回null,如果客户是空或者如果命令是空
6、int? orderNumber = Customer?.Order?.OrderNumber;
------------
然后我做例子
namespace WebApplication1
{
public partial class SiteMaster: System.Web.UI.MasterPage
{
protected void Page_Load(object sender,EventArgs e)
{
Employee my = null;
string name = my?.Name; //但这里出现语法错误,当然生成也无法通过
}
}
public class Employee
{
public string Name{get;set;}
}
}这是怎么回事,
谢谢
第四个
4. 安全的null延迟赋值操作符
我很想看到一种安全地访问一个值为null的对象的属性的表达式,表达式可能形如Object.Property.Property.Value
比如我要访问Customer?.FirstName,但是Customer是null,此时Customer?.FirstName会返回null而不是抛出个NullReferenceException
再看看下面的代码,你就会知道怎么用了:
1、//如果不是客户或命令无效,这将抛出一个像往常一样空引用异常
2、int orderNumber = Customer.Order.OrderNumber;
3、//这将无法编译,因为它需要一个空的返回类型
4、int orderNumber = Customer.Order?.OrderNumber;
5、//这将返回null,如果客户是空或者如果命令是空
6、int? orderNumber = Customer?.Order?.OrderNumber;
------------
然后我做例子
namespace WebApplication1
{
public partial class SiteMaster: System.Web.UI.MasterPage
{
protected void Page_Load(object sender,EventArgs e)
{
Employee my = null;
string name = my?.Name; //但这里出现语法错误,当然生成也无法通过
}
}
public class Employee
{
public string Name{get;set;}
}
}这是怎么回事,
谢谢
先改成int? orderNumber=Customer.Order.OrderNumber;