从我null在C#6.0中使用新运算符收集的内容中,您可以执行以下操作:
string name = people.FirstOrDefault()?.FullName;
Run Code Online (Sandbox Code Playgroud)
这很棒,但我经常遇到的一个验证是这样的:
object name = null;
if(name != null) {
DoSomething();
} else {
DoSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
鉴于新null运营商的目的,我希望这样的事情应该是可能的:
if(name?) {
DoSomething();
} else {
DoSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这里的问题是,当?检查的值实际上是null,它返回null,并且您需要语句的bool条件if.由于您无法直接将a转换null为a bool,是否有更简单的方法可以在不if(name != null)使用nullC#6.0中的new 运算符的情况下进行检查?
Lua*_*aan 13
这样做没有意义.你在你的例子中没有做任何空合并 - 你只是检查null.
如果你想检查name对象的某个成员,可以更好地使用.例如:
if (name?.FirstName != null) ...
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的,它仍然是一个简单的null比较 - 我们只是使用null合并来避免写这样的东西:
if (name != null && name.FirstName != null) ...
Run Code Online (Sandbox Code Playgroud)