Que signifie le point d’interrogation dans l’access des membres en C #?

Quelqu’un peut-il m’expliquer s’il vous plaît ce que signifie le point d’interrogation dans l’access membre dans le code suivant?

Cela fait-il partie de la norme C #? Je reçois des erreurs d’parsing en essayant de comstackr ce fichier dans Xamarin Studio.

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

AnalyzerFileReference.cs ligne 195

C’est l’ opérateur de propagation Null introduit en C # 6 , il n’appellera la méthode que si l’object this.AnalyzerLoadFailed n’est pas null:

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

est égal à :

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

Voir C # 6.0 – Opérateur de propagation nulle , vous pouvez également voir ici

J’ai aussi écrit une fois à propos de cette nouvelle fonctionnalité en C # 6 ici

Dans la version 6 de C #, ce sera un raccourci pour

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