Maison >développement back-end >C++ >Quel est le mystère derrière l'opérateur conditionnel nul de C # 6.0 (?.)?

Quel est le mystère derrière l'opérateur conditionnel nul de C # 6.0 (?.)?

Susan Sarandon
Susan Sarandonoriginal
2025-01-25 15:43:11890parcourir

What's the Mystery Behind C# 6.0's Null-Conditional Operator (?.)?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn