在C#中,成员访问中的问号意味着什么

本文关键字:意味着 什么 访问 成员 | 更新日期: 2023-09-27 18:25:10

有人能向我解释一下下面代码中成员访问中的问号是什么意思吗?

它是标准C#的一部分吗?我在Xamarin Studio中编译这个文件时遇到解析错误。

this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));

AnalyzerFileReference.cs第195行

在C#中,成员访问中的问号意味着什么

这是C#6中引入的Null传播运算符,只有当对象this.AnalyzerLoadFailed不为Null时,它才会调用该方法:

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–空传播运算符,也可以在此处查看

我也曾经在c#6中写过这个即将到来的特性

在C#版本6中,它将是的简写

if (this.AnalyzerLoadFailed != null)
    this.AnalyzerLoadFailed.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));