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 !
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
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.