有人可以请我解释下列代码中成员访问中的问号是什么意思?C#中成员访问中的问号是什么意思?
它是标准C#的一部分吗?当试图在Xamarin Studio中编译这个文件时,我得到了解析错误。
this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
有人可以请我解释下列代码中成员访问中的问号是什么意思?C#中成员访问中的问号是什么意思?
它是标准C#的一部分吗?当试图在Xamarin Studio中编译这个文件时,我得到了解析错误。
this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
据Null Propagation operator在Ç引入#6,它将调用该方法只有当对象this.AnalyzerLoadFailed
不为空:
this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
等于:
if(this.AnalyzerLoadFailed != null)
this.AnalyzerLoadFailed.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
见C# 6.0 – Null Propagation Operator,还可以看到here
我也曾经在C#写了这个即将到来的标志6 here
这是比较老的答案,但上面的说法不正确,它与上面代码的** threadsafe **版本相同,它涉及将事件处理程序分配给本地变量并对局部变量 – Tseng 2015-03-16 15:42:21
在C#6版将是速记
if (this.AnalyzerLoadFailed != null)
this.AnalyzerLoadFailed.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
这将是C#的一部分见http://damieng.com/blog/2013/12/09/probable-c-6-0-features-illustrated,“7。 Monadic null checking“ – 2014-10-01 13:29:22