C# 方法调用中的问号语法

C# 方法调用中的问号语法,c#,C#,以下C代码中的?表示什么 我已经读到,您可以在类型之前使用?来指示它是可为空的类型。这是C#6代码,使用表示如果处理程序为空,则此代码不会抛出NullReferenceException异常: Delegate handler = null; handler?.Invoke(); 这样可以避免编写在以前的C语言版本中必须执行的空检查: Delegate handler = null; if (handler != null) { handler.Invoke(); } 这是C#6中新

以下C代码中的
表示什么

我已经读到,您可以在类型之前使用
来指示它是可为空的类型。这是C#6代码,使用表示如果
处理程序
为空,则此代码不会抛出
NullReferenceException
异常:

Delegate handler = null;
handler?.Invoke();
这样可以避免编写在以前的C语言版本中必须执行的空检查:

Delegate handler = null;
if (handler != null)
{
    handler.Invoke();
}

这是C#6中新增的安全导航操作员。必须有一个重复的地方,所以。不,这和声明一个可为空的类型不是一回事。你看到的是C#6语法,称为
null条件运算符
,我想说的是,这个问题根本不是重复的,因为它的问题和顶部答案是相反的。这里的OP想知道
?。
做了什么,而引用的“replicate”是在C#中还不存在该特定功能时询问的。大多数问号搜索结果也只引用条件oerator、null合并运算符或null-able结构类型,那么您应该如何确定它是“条件访问”?请记住,符号字符真的很难搜索。为什么要对此做出回应,因为它显然是一个dup?@GrantWinney我认为,当有人从谷歌提出这个问题时,他们会看到指向另一个问题的路标。然后,他们会读到以前没有简单的方法来做空条件检查,但现在有了。。。他们会有一个“啊哈!”的时刻。
Delegate handler = null;
if (handler != null)
{
    handler.Invoke();
}