Maison >développement back-end >C++ >Quel est le mystère derrière l'opérateur conditionnel nul de C # 6.0 (?.)?
Le secret de l'opérateur point d'interrogation C# 6.0
L'opérateur ?. introduit dans C# 6.0 a suscité l'intérêt des développeurs. Laissez-nous vous dévoiler son mystère :
Ce qu'il fait :
L'opérateur?. est appelé l'opérateur "conditionnel vide". Il vous permet d'accéder en toute sécurité aux propriétés ou d'appeler des méthodes d'un objet potentiellement nul sans provoquer d'exceptions NullReferenceException ennuyeuses.
Comment ça marche :
L'opérateur?. évalue le premier opérande. S'il est nul, l'expression s'arrête et renvoie null. Cependant, si le premier opérande n’est pas nul, il procède alors à l’évaluation du deuxième opérande, accessible en tant que membre du premier opérande.
Exemple :
Considérez l'extrait de code suivant :
<code class="language-c#">public class A { public string PropertyOfA { get; set; } } ... var a = new A(); var foo = "bar"; if(a?.PropertyOfA != foo) { //somecode }</code>
Ici, si a est nul, a?.PropertyOfA renverra gracieusement null au lieu de lever une exception. Cela vous permet d'utiliser l'opérateur == de la chaîne pour la comparer à foo et continuer à exécuter l'instruction if sans aucun problème.
Code équivalent :
L'opérateur? peut être considéré comme une version abrégée du code suivant :
<code class="language-c#">string bar = (a == null ? null : a.PropertyOfA); if (bar != foo) { ... }</code>
Tapez Notes :
Il est à noter que l'opérateur ?. peut également changer le type d'expression. Par exemple, FileInfo.Length est une propriété de type long. Cependant, utiliser ?. entraînera une expression de type long? :
<code class="language-c#">FileInfo fi = ...; // fi 可能为 null long? length = fi?.Length; // 如果 fi 为 null,length 将为 null</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!