Avatar ·

Que signifient deux points d'interrogation à la suite en C# ?

Bonjour ! Je viens de commencer à apprendre C# et je suis tombé sur une syntaxe étrange. Dans du code écrit par quelqu'un d'autre, j'ai vu cette construction : ```csharp string name = userName ?? "Invité"; ``` Que font ces deux points d'interrogation `??` ici ? Je comprends que `userName` est une variable, mais pourquoi mettre deux points d'interrogation puis une chaîne ? Est-ce une sorte de vérification ? J'ai essayé de chercher sur Google, mais je trouve surtout des explications sur l'opérateur ternaire `? :`, alors que ça a l'air différent. J'ai aussi remarqué qu'on écrit parfois `??=` — est-ce lié ? Par exemple, dans ce code : ```csharp list ??= new List(); ``` Pouvez-vous m'expliquer simplement comment ça fonctionne et à quoi ça sert ? Avec des exemples si possible, parce que je suis visuel. Merci d'avance ! <<>>

Opérateur de coalescence null (??) en C#

Deux points d'interrogation ?? en C# sont le null-coalescing operator (opérateur de coalescence null). Il est utilisé pour vérifier si une valeur est null et, si c'est le cas, fournir une valeur par défaut. Par exemple : ```csharp string name = userName ?? "Invité"; ``` Cela signifie : si `userName` n'est pas null, alors `name` prend la valeur de `userName` ; sinon, `name` prend la valeur "Invité". C'est une manière concise d'éviter une vérification explicite avec `if`. Quant à ??=, c'est l'opérateur d'assignation de coalescence null (null-coalescing assignment operator), introduit en C# 8.0. Il assigne une valeur à une variable seulement si celle-ci est null. Par exemple : ```csharp list ??= new List(); ``` Cela équivaut à : ```csharp if (list == null) { list = new List(); } ``` Ces opérateurs sont très utiles pour simplifier le code et éviter les erreurs liées aux références null.