c# - C# 中变量后的 "?"是什么意思?

标签 c# c#-4.0 operators

这个条件是什么意思?

if (!helper?.Settings.HasConfig ?? false)

附言

  • helper 是一些class
  • 的变量
  • Settings 是一些字段
  • HasConfig 也是字段

最佳答案

嗯,?. 是一个空条件运算符

https://msdn.microsoft.com/en-us/library/dn986595.aspx

x?.y

表示如果 x 为 null 则返回 null 否则返回 x.y

?? 是一个空合并运算符

https://msdn.microsoft.com/en-us/library/ms173224.aspx

x ?? y

表示如果 x == null 返回 y,否则 x

结合以上所有内容

helper?.Settings.HasConfig ?? false

表示:如果

返回false
helper == null or
helper.Settings.HasConfig == null

否则返回

helper.Settings.HasConfig

没有???.的代码 if可以改写成笨重

if (!(helper == null 
        ? false
        : (helper.Settings.HasConfig == null 
             ? false
             : helper.Settings.HasConfig))) 

关于c# - C# 中变量后的 "?"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37851873/

相关文章:

c# - 如何使用 System.Linq.Expressions.Expression 根据 child 进行过滤?

wpf - 如何将选择限制为 WPF 中 DataGrid 的一行中最多两个单元格?

java - 将列表中每个对象的值增加 11

c++ - ostream 引用运算符 <<

c# - 如何发布项目中包含一些必要文件的文件夹

c# - ASP.NET 成员资格 - 从成员资格表中检索密码和 PasswordSalt - 哈希用户 ID

没有命名空间的 C# XElement

c# - 如何在 RDLC 报告的同一文本框中左对齐和右对齐两个不同的表达式?

ASP.NET 如何从参数化 SQL 查询中删除双引号?

C++ - 我应该使 `operator+` 为常量吗?它会返回引用吗?