# Qu'est-ce que l'opérateur de coalescence nulle ?

**URL:** https://dessein-tech.com/t/quest-ce-que-loperateur-de-coalescence-nulle/635
**Category:** DotNET
**Created:** 2024-08-25T02:38:13Z
**Posts:** 3

## Post 1 by @Patrick — 2024-08-25T02:38:13Z

L’opérateur `??` en C# est utilisé pour fournir une valeur par défaut lorsque l’opérande gauche est `null`. Cet opérateur est appelé l’opérateur de coalescence nulle.

Voici un exemple simple :

```
string nomUtilisateur = null;
string nomAffichage = nomUtilisateur ?? "Utilisateur Anonyme";

Console.WriteLine(nomAffichage);
```

> **Pourquoi coalescence ?**
>
> Le terme **coalescence** vient du latin _coalescere_, qui signifie «&nbsp;se développer ensemble&nbsp;» ou «&nbsp;fusionner&nbsp;». En programmation, cela se traduit par l’idée de «&nbsp;fusionner&nbsp;» deux valeurs pour en obtenir une seule, en fonction de la présence ou non de valeur nulle.

Dans cet exemple :

- Si `nomUtilisateur` est `null`, alors `nomAffichage` prendra la valeur `"Utilisateur Anonyme"`.
- Si `nomUtilisateur` avait une valeur (par exemple `"John Doe"`), alors `nomAffichage` aurait pris cette valeur.

 ![image](https://dessein-tech.com/uploads/default/original/1X/9a7c1e2377758ef330af9ea90c629d3d5668e299.png)

Ainsi, si vous exécutez ce code, la sortie sera :

```
Utilisateur Anonyme
```

L’opérateur `??` est particulièrement utile pour éviter des vérifications explicites de `null` et pour fournir des valeurs par défaut plus facilement.

Plus d’information:

> **[Opérateur de coalescence des nuls (Nullish coalescing operator) - JavaScript...](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing)**
>
> L'opérateur de coalescence des nuls (??), est un opérateur logique qui renvoie son opérande de droite lorsque son opérande de gauche vaut null ou undefined et qui renvoie son opérande de gauche sinon.

---

## Post 2 by @gilecad — 2024-09-04T17:32:11Z

Petite précision sémantique.  
C# 8 (.NET Core uniquement) apporte un nouvel opérateur d’affectation de coalescence nulle : ??= qui fonctionne comme d’autres opérateurs d’affectation (+=, &=, …).

```
// l'expression suivante :
if (str is null) 
    str = "foo";
// peut s'écrire :
str ??= "foo";
```

Dés lors Microsoft parle « d’opérateur fusion nulle » pour : ?? et « d’opérateur de coalescence nulle » pour ??= (voir [ce sujet](https://learn.microsoft.com/fr-fr/dotnet/csharp/language-reference/operators/null-coalescing-operator)).

---

## Post 3 by @Patrick — 2024-09-04T17:33:52Z

Merci @gilecad ! N’hésites pas compléter/corriger le contenu comme tu l’as fait. :+1:
