Maison >développement back-end >C++ >Comment l'opérateur conditionnel nul de C # 6.0 (?.) Empêche-t-il NullReferenceExceptions?

Comment l'opérateur conditionnel nul de C # 6.0 (?.) Empêche-t-il NullReferenceExceptions?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-25 15:31:09531parcourir

How Does C# 6.0's Null Conditional Operator (?. ) Prevent NullReferenceExceptions?

Explication détaillée de l'opérateur conditionnel nul C# 6.0 : ?.

L'opérateur ?. (opérateur conditionnel nul) introduit dans C# 6.0 a attiré l'attention des développeurs. Il fournit une manière élégante de gérer les références nulles, ce qui donne un code plus propre et plus efficace.

?. Explication détaillée des opérateurs

Le rôle principal de l'opérateur

? est d'empêcher d'éventuelles exceptions de référence nulle. Son mécanisme de fonctionnement est le suivant :

  • Si le premier opérande est non nul, le deuxième opérande (accès membre) est évalué.
  • Si le premier opérande est vide, renvoyez null au lieu de lever une exception.

Application pratique : Éviter les exceptions de référence nulle

Considérons l'exemple suivant :

<code class="language-csharp">public class A {
   public string PropertyOfA { get; set; }
}

...

var a = new A();
var foo = "bar";
if(a?.PropertyOfA != foo) {
   //somecode
}</code>

Dans cet exemple, l'opérateur ?. gère avec élégance le cas où a peut être vide. Si a est vide, a?.PropertyOfA renverra null, évitant ainsi NullReferenceException provoquée par des comparaisons ultérieures. Si a n'est pas vide, a.PropertyOfA est évalué et comparé à foo.

Similitude avec les instructions conditionnelles

L'opérateur conditionnel vide est comme une instruction conditionnelle simplifiée :

<code class="language-csharp">string bar = (a == null ? null : a.PropertyOfA);
if (bar != foo)
{
    ...
}</code>

Cependant, l'opérateur ?. offre une alternative plus propre et plus efficace.

Remarques sur la conversion de type

Il convient de noter que l'utilisation de l'opérateur ?. peut affecter le type d'expression. Par exemple, si une propriété renvoie des données de type long, l'utilisation de l'opérateur conditionnel nul entraînera une expression de type long?:

<code class="language-csharp">FileInfo fi = ...; // fi可能为空
long? length = fi?.Length; // 如果fi为空,length将为空</code>

Résumé

L'opérateur ?. en C# 6.0 fournit un moyen pratique et sûr de gérer les références nulles, évitant ainsi le besoin de vérifications nulles explicites et une gestion fastidieuse des erreurs dans de nombreux scénarios. Grâce à cette fonctionnalité puissante, les développeurs peuvent écrire du code plus robuste et plus efficace, réduisant ainsi le risque d'exceptions inattendues et améliorant la lisibilité du 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