如何使用Null-Conditional运算符检查不是Null?

时间:2017-05-03 18:02:37

标签: c# c#-6.0

每个例子,

!_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。

1 个答案:

答案 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的类的成员。