Comprendre les types nullables en C# : gérer les valeurs nulles en toute sécurité
C# fournit des types nullables permettant d'assigner à la fois les valeurs normales d'un type et la valeur null.
Par exemple, un Nullable<Int32> peut stocker toute valeur de -2 147 483 648 à 2 147 483 647 ou null. De même, un Nullable<bool> peut valoir true, false ou null.
Syntaxe de déclaration
<type_données>? <nom_variable> = null;
Le ? est un raccourci pour Nullable<T>.
Exemple d'utilisation
using System;
namespace ApplicationNullables
{
class DemoNullables
{
static void Main(string[] args)
{
int? num1 = null;
int? num2 = 45;
double? num3 = new double?();
double? num4 = 3.14157;
bool? boolval = new bool?();
// Affichage
Console.WriteLine("Nullables : {0}, {1}, {2}, {3}", num1, num2, num3, num4);
Console.WriteLine("Booléen nullable : {0}", boolval);
Console.ReadLine();
}
}
}
Résultat :
Nullables : , 45, , 3.14157
Booléen nullable :
Note : l'affichage d'une valeur null produit une chaîne vide.
L'opérateur de coalescence nulle (??)
Cet opérateur fonctionne avec les types valeurs nullables et les types référence. Il retourne la valeur de son opérande de gauche si elle n'est pas null, sinon la valeur de l'opérande de droite.
Syntaxe : expr1 ?? expr2
Exemple
using System;
namespace ApplicationNullables
{
class DemoNullables
{
static void Main(string[] args)
{
double? num1 = null;
double? num2 = 3.14157;
double num3;
num3 = num1 ?? 5.34;
Console.WriteLine("Valeur de num3 : {0}", num3); // 5.34
num3 = num2 ?? 5.34;
Console.WriteLine("Valeur de num3 : {0}", num3); // 3.14157
Console.ReadLine();
}
}
}
Résultat :
Valeur de num3 : 5.34
Valeur de num3 : 3.14157
Bonnes pratiques
- Utilisez
HasValueetValuepour vérifier et accéder à la valeur - Préférez
??pour fournir des valeurs par défaut - Évitez les conversions implicites vers le type non-nullable sans vérification
Langue C
- Maîtriser Java 8 Optional : Guide pratique pour un code sans null
- Maîtriser les attributs en C# : enrichir le code avec des métadonnées
- Ferro-Titanit® Cromoni – Alliage de titane haute résistance, non magnétique
- Alliage AgCu20 : Propriétés mécaniques et thermiques complètes à 23°C
- Alliage 15CDV6 (DIN 1.7734) : Haute Résistance, Tenacité & Soudabilité Aisée
- DIN 1.7734 5 – Alliage 15CDV6 : Haute Résistance, Tenacité & Soudabilité Aisée
- Alliage 15CDV6 (DIN 1.7734) – Haute Résistance, Soudage Facile, Tenacité Supérieure
- Alliage PtNi10 : Propriétés Mécaniques & Thermiques Complètes
- Alliage PtIr10 Platine-Iridium : Matériau Haute Résistance & Haute Température