DotnetDojo

Développer des applications modernes avec les technologies Microsoft et Open source

  • Blog
  • Vidéos
  • Formations
  • Outils

Mieux coder avec l’opérateur ??

Il existe en C# un opérateur peu connu et du coup, peu utilisé. Pourtant, il permet de vraiment simplifier votre code.

L’opérateur dont je parle est ?? (null coalescing operator).
Il s’utilise sur des types pouvant avoir une valeur null.

Voici comment l’utiliser :

[csharp] string nom = utilisateur ?? string.Empty;
[/csharp]

Dans cet exemple, l’opérateur ?? fonctionne de la manière suivante :

  • Si utilisateur est non null, alors utilisateur est assigné à nom,
  • Sinon, string.Empty (chaine vide) est assigné à nom.

Le code précédent est identique à :

[csharp] string nom = utilisateur;

if (utilisateur == null) nom = string.Empty;
[/csharp]

L’opérateur ?? permet d’améliorer votre code en écrivant des algorithmes plus simples (moins d’imbrications de blocs) et surtout il améliore aussi la lisibilité.

A vous d’essayer

L’avez-vous déjà utilisé dans vos projets ? Faites-moi part de vos retours !

[ninja-inline id=3695]

Besoin de résultats rapides ?

Découvrez les formations vidéos que je propose :

  

 

Formations en présentiel (dans toute la France)

Découvrez également les formations C# et .NET que je donne en présentiel (en France)

Comments

  1. Philippe says

    25 janvier 2013 at 17 h 19 min

    Il me semble que le choix pour illustrer cet opérateur d’une string est un mauvais choix (car il peut prendre la valeur nulle et n’illustre pas le bénéfice de cet opérateur). Remplacer dans votre code par un int et votre code n’est pas valide (et ne compilera pas!).
    Par conséquent, le code equivalent serait plutot
    int valeur;
    if (valeurInitiale.HasValue)
    valeur= string.Empty;
    else valeur= valeurInitiale.Value;

    car si on fait ça avec un int par exemple :
    int? valeurInitiale;
    [du code où valeurInitiale prend une valeur]
    int valeur = valeurInitiale; //ne compile pas (sauf avec des strings qui est un type batard en c#)
    int valeur = valeurInitiale.Value; //compile mais crash si valeurInitiale est null

    • Pascal Lacroix says

      28 janvier 2013 at 20 h 32 min

      Merci Philippe pour le complément.

      Effectivement, j’ai oublié de préciser que l’opérateur ne s’applique que sur des types nullables.

A propos de DotnetDojo

Pascal Lacroix

Je m’appelle Pascal et je suis passionné par le développement logiciel, l’efficacité et l’entrepreneuriat. Sur DotnetDojo, je vous propose des méthodes pour apprendre à développer des applications modernes avec les technologies Microsoft et Open Source.

En savoir plus

Liens complémentaires

  • A propos de DotnetDojo
  • 18 principes pour professionnaliser le développement logiciel
  • Boite à outils du développeur
  • Tous les articles
  • Liste des formations
  • Contact

Copyright 2019 Jupiteo · Mentions légales · Contact · CGV · Offres d'emploi .NET · Formations Dotnet