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));