方法调用上的问号语法

时间:2015-12-15 20:06:50

标签: c#

?在以下C#代码中表示什么?

var handler = CallBack;
handler?.Invoke();

我已经读过你可以在类型之前使用?来表明它是可以为空的类型。这是做同样的事吗?

1 个答案:

答案 0 :(得分:26)

这是使用null conditional operator的C#6代码,表示如果NullReferenceException为空,此代码不会抛出handler异常:

Delegate handler = null;
handler?.Invoke();

避免编写在以前版本的C#语言中必须执行的空检查:

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