【发布时间】:2015-08-25 15:15:00
【问题描述】:
根据我在 C# 6.0 中使用新的 null 运算符收集到的信息,您可以执行以下操作:
string name = people.FirstOrDefault()?.FullName;
这很好,但我经常遇到的一个验证是这样的:
object name = null;
if(name != null) {
DoSomething();
} else {
DoSomethingElse();
}
鉴于新的null 运算符的目的,我希望这样的事情应该是可能的:
if(name?) {
DoSomething();
} else {
DoSomethingElse();
}
据我了解,这里的问题是,当? 检查的值实际上是null 时,它返回null,而if 语句需要bool 条件。由于您不能直接将null 转换为bool,有没有更简单的方法可以在不使用 C# 6.0 中新的null 运算符的情况下检查此问题而不使用if(name != null)?
【问题讨论】:
-
认真的吗?输入
!= null还不够简单?很清晰,可读性强,六个月看代码的开发者很容易明白它在做什么…… -
这样一个运营商的目的是什么?写
if(name?) ...而不是if(name!=null)有什么好处 -
在 JS 中,您可以简单地执行
if(name)并验证null,在我看来,接近的东西会是一件好事,而且它可能在新的更新中,猜不出来。 -
@ricochte 在 Javascript 中没有什么简单 - 事实上,对空值的不一致处理是该语言更成问题的特性之一。 为什么 null 值应该被视为布尔值 False?缺失值在逻辑上与 False 值不同。
-
虽然这不是您要求的,但请记住,有时
??和?一起可以为您提供简洁的表达方式。例如:var bar = foo?.wombat ?? defaultWombat;