Opérateurs de coalescence de nullité
Valeurs par défaut avec ?? et ??=.
Opérateurs de coalescence de nullité est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.
Fournir une valeur de repli
Souvent, vous souhaitez utiliser une valeur lorsqu'elle existe, ou une valeur par défaut lorsqu'elle est nulle. L'opérateur de coalescence des valeurs nulles ?? fait exactement cela.
a ?? b signifie : utiliser a si sa valeur n'est pas nulle, sinon utiliser b.
string input = null;
string name = input ?? "Guest";
System.Console.WriteLine(name);Évaluation de ??
Le côté gauche est évalué en premier. S'il n'est pas nul, le côté droit n'est jamais évalué.
Cette évaluation en court-circuit signifie qu'une valeur de repli coûteuse n'est calculée que lorsque cela est réellement nécessaire.
string cached = "data";
string value = cached ?? Compute();
System.Console.WriteLine(value);
// Compute() is never called hereFonctionne avec les types valeur pouvant être nuls
?? retire également l'enveloppe des types valeur pouvant être nuls. La combinaison de int? maybe avec ?? 0 produit un int ordinaire qui ne peut pas être nul.
C'est une manière claire de convertir int? en int avec une valeur par défaut.
int? maybe = null;
int sure = maybe ?? 0;
System.Console.WriteLine(sure);Un exemple exécutable
Ce programme lit un paramètre qui peut être nul et utilise une valeur par défaut en guise de repli. Exécutez-le pour voir la valeur de repli en action.
using System;
class Program
{
static void Main()
{
string theme = null;
string active = theme ?? "light";
Console.WriteLine("Theme: " + active);
}
}Enchaîner les opérateurs ??
Vous pouvez enchaîner plusieurs valeurs de repli. L'expression sélectionne la première valeur non nulle en partant de la gauche.
a ?? b ?? c essaie a, puis b, et enfin c en dernier recours.
string a = null;
string b = null;
string c = "default";
System.Console.WriteLine(a ?? b ?? c);L'opérateur ??=
L'affectation avec coalescence des valeurs nulles ??= affecte le côté droit uniquement si le côté gauche vaut actuellement null.
x ??= y est une forme abrégée de if (x == null) x = y; et laisse x inchangé lorsqu'il contient déjà une valeur.
string config = null;
config ??= "default";
System.Console.WriteLine(config);
config ??= "ignored";
System.Console.WriteLine(config);Initialisation différée avec ??=
Une utilisation courante de ??= est l'initialisation différée : créer un objet uniquement la première fois qu'il est nécessaire.
Lors des appels suivants, le champ est déjà défini, donc ??= ne fait rien.
System.Collections.Generic.List<int> items = null;
items ??= new System.Collections.Generic.List<int>();
items.Add(1);
System.Console.WriteLine(items.Count);Combiner ?. et ??
Associer ?. et ?? est extrêmement courant. ?. évite l'exception et ?? fournit une valeur lorsque la chaîne produit une valeur nulle.
user?.Name ?? "Unknown" lit le nom en toute sécurité et utilise "Unknown" par défaut.
string s = null;
int length = s?.Length ?? -1;
System.Console.WriteLine(length);?? dans un programme complet
Ici, ?. et ?? fonctionnent ensemble pour afficher une longueur sûre. Exécutez le programme avec une chaîne nulle pour voir la valeur de repli.
using System;
class Program
{
static void Main()
{
string username = null;
string display = username ?? "anonymous";
Console.WriteLine(display);
Console.WriteLine(username?.Length ?? 0);
}
}?? : lever une exception en cas de valeur nulle
Le côté droit de ?? peut être n'importe quelle expression, y compris throw. Cela fait de ?? un moyen concis d'échouer immédiatement lorsqu'une valeur nulle est inattendue.
name ?? throw new ArgumentNullException(nameof(name)) renvoie le nom ou déclenche une exception s'il est nul.
string Validate(string name) =>
name ?? throw new System.ArgumentNullException(nameof(name));Associativité à droite
?? est associatif à droite ; ainsi, a ?? b ?? c est regroupé comme a ?? (b ?? c).
En pratique, cela signifie toujours que « la première valeur non nulle l'emporte », mais il est utile de le savoir pour raisonner sur des expressions complexes.
int? a = null;
int? b = null;
int result = a ?? b ?? 99;
System.Console.WriteLine(result);Vérification rapide
Vérifiez votre compréhension des opérateurs de coalescence des valeurs nulles.
Récapitulatif
?? renvoie son côté gauche s'il n'est pas nul, sinon son côté droit, et peut être enchaîné. ??= affecte une valeur uniquement lorsque la cible est nulle, ce qui est idéal pour l'initialisation différée.
Combinez ces opérateurs avec ?. pour gérer les valeurs nulles de manière sûre et concise, et utilisez même ?? throw pour échouer immédiatement.
Questions Fréquemment Posées
La leçon « Opérateurs de coalescence de nullité » est-elle gratuite ?
Oui — le texte complet de « Opérateurs de coalescence de nullité » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Opérateurs de coalescence de nullité » ?
Valeurs par défaut avec ?? et ??=. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C# Academy ?
Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Opérateurs de coalescence de nullité » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?
Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Types de valeurs pouvant être nulles
- Opérateur conditionnel de nullité
- Opérateurs de coalescence de nullité
- Se prémunir contre les valeurs nulles