条件语句中的 C# 6.0 空运算符

标签 c# null c#-6.0

根据我在 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,是否有一种更简单的方法可以在不执行 if(name != null) 的情况下进行检查> 在 C# 6.0 中使用新的 null 运算符?

最佳答案

这样做没有意义。您没有在您的示例中执行任何 null 合并 - 您只是检查 null。

更好的用途是检查 name 对象的某些成员。例如:

if (name?.FirstName != null) ...

但如您所见,它仍然是 null 的简单比较 - 我们只是使用 null 合并来避免必须编写如下内容:

if (name != null && name.FirstName != null) ...

关于条件语句中的 C# 6.0 空运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32207793/

相关文章:

sql - 从同时具有距离和时间的列计算平均速度(NULL 问题)

c# - 为什么 null 条件运算符对 == 和 .Equals() 的行为不同?

c# - 如何在 C# 中摆脱 Cannot await 'void'

c# - 更改后如何获取自动实现属性 C# 6.0 的默认编译时值?

c# - 使用桌面应用程序 c# 的本地数据库值更新远程数据库

c# - Windows Vista\7 上的应用程序 list 、管理员权限和自动启动

c# - 为什么重载方法的优先级低于实例方法

c# - 如何在 WPF 中将 ItemsSource 与 ObservableCollection 绑定(bind)

C - 为什么在将单个字符分配给数组时自动添加字符串终止符?

c++ - 释放链表节点时出现段错误