Aller au contenu

L'affectation conditionnelle sur la valeur null

Présentation

Avant, pour valoriser une propriété d’un objet qui existait, nous écrivions :

if (product != null)
    product.Uid = Guid.NewGuid();

A partir de la version 14 du langage C#, la structure conditionnelle if n'est plus obligatoire, grâce à l'affectation conditionnelle sur la valeur null, que nous pouvons voir comme une extension de l'opérateur conditionnel de nullité ? , déjà présent dans les versions précédentes. Dorénavant, nous pouvons écrire :

product?.Uid = Guid.NewGuid();

Avec les affectations imbriquées

Voici un test classique que nous avons l'habitude d'écrire en C# :

if (request?.Manager != null)
    request.Manager.UserName = "admin";

L'affectation conditionnelle sur la valeur null permet de simplifier l'écriture de cette instruction :

request?.Manager?.UserName = "admin";

Avec les indexeurs

Si nous souhaitons vérifier qu'un dictionnaire existe avant de valoriser un élément à partir de sa clé, nous écrivions :

if (dictionary != null)
    dictionary["key"] = value;

Maintenant, nous pouvons écrire :

dictionary?["key"] = value; 

Cas non supporté

L'instruction ci-dessous n'est pas supportée, car elle implique à la fois une lecture puis une écriture de la propriété Position.

user?.Position++;