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
Libérer: 2025-01-25 15:31:09
original
459 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal