What does the question mark in member access mean in C#?
Can someone please explain to me what does the question mark in the member access in the following code means?
Is it part of standard C#? I get parse errors when trying to compile this file in Xamarin Studio.
this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
AnalyzerFileReference.cs line 195
It is Null Propagation operator introduced in C# 6 , it will call the method only if object this.AnalyzerLoadFailed
is not null:
this.AnalyzerLoadFailed?.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
is equal to :
if( this.AnalyzerLoadFailed != null)
this.AnalyzerLoadFailed.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
See C# 6.0 – Null Propagation Operator , also you can see here
i also once wrote about this upcoming feature in c# 6 here
在C#版本6中,它将是速记
if (this.AnalyzerLoadFailed != null)
this.AnalyzerLoadFailed.Invoke(this, new AnalyzerLoadFailureEventArgs(AnalyzerLoadFailureEventArgs.FailureErrorCode.NoAnalyzers, null, null));
链接地址: http://www.djcxy.com/p/53858.html
上一篇: 使用条件?:(三元)运算符的好处
下一篇: 成员访问中的问号在C#中意味着什么?