每个例子,
!_Worker?.StartWork() ?? "Work has started on current thread.";
Console.WriteLine(_Worker);
public string StartWork()
{
//Do some work here.
}
简化而不是使用C#6.0,
if(!_Worker == null)
{
_Worker = "Work has started on current thread.";
Console.WriteLine(_Worker);
StartWork();
}
这两个例子是否等同?
我希望结果写出"工作已经开始在当前线程上。 "当_Worker = null。
答案 0 :(得分:2)
编写null条件运算符是为了解决这个问题:
if(someObject!=null
&& someObject.ItsProperty!= null
&& someObject.ItsProperty.PropertyOfThatThing!=null)
{
theValueIWant == someObject.ItsProperty.PropertyOfThatThing.AnotherProperty;
}
现在我们可以写
theValueIWant = someObject?.ItsProperty?.PropertyOfThatThing?.AnotherProperty;
所以这不是检查null的方法 - 已经存在。 if(x==null)
或if(x!=null)
。如果那是唯一的需要,那么就不会添加这个新的运算符。它是关于访问可能为null的类的成员。