histoire
Le langage C # n'a pas pris en compte le problème des valeurs nulles lors de sa conception initiale, il est donc sujet à NullReferenceException (NullReferenceException) lorsqu'il traite des types de référence nuls. À cette fin, C # 8 a introduit la fonctionnalité de nullité lors de sa sortie en 2019, visant à mieux prendre en charge les types de référence nuls.
définition
La fonctionnalité de nullabilité est une fonctionnalité de langage pour une meilleure prise en charge des types de référence null. Il permet aux développeurs de marquer explicitement si un type ou un membre est nullable et de le faire vérifier statiquement au moment de la compilation. Cela évite les exceptions de référence null lors de l'exécution.
Mode d'emploi
L'utilisation de la fonctionnalité de nullabilité en C# nécessite les étapes suivantes :
- Pour activer la fonctionnalité de nullabilité dans le fichier de projet, vous pouvez définir l'option « contexte nullable » sur « activé » ou « avertissements » dans les propriétés du projet ;
- Utilisez le contexte d'annotation dans votre code
#nullable
pour indiquer au compilateur comment gérer les types de référence null ; - Utilisez les annotations
nullable
,notnull
oumaybe
pour indiquer si un type ou un membre est nullable ; - Utilisez l'opérateur conditionnel null ou l'opérateur de coalescence null pour éviter les exceptions de référence null lorsque vous travaillez avec des types ou des membres nullables.
Voici un exemple utilisant la fonctionnalité de possibilité de valeur nulle :
#nullable enable
class Program
{
static void Main(string[] args)
{
string? str = null;
Console.WriteLine(str?.Length ?? 0); // 使用null条件运算符和null合并运算符来避免空引用异常
List<string?> list = new List<string?>() { "apple", null, "banana" };
foreach (string? item in list)
{
Console.WriteLine(item?.Length ?? 0); // 使用null条件运算符和null合并运算符来避免空引用异常
}
}
}
#nullable disable
avantage
Les avantages de l'utilisation de la fonctionnalité de nullabilité incluent :
- Marquez explicitement les types ou les membres nullables pour rendre le code plus clair et plus facile à comprendre ;
- Le compilateur peut vérifier l'utilisation de types de référence null au moment de la compilation, réduisant ainsi le risque d'exceptions de référence null ;
- Pour les bibliothèques ou frameworks tiers, les annotations de nullabilité peuvent être utilisées pour clarifier la nullabilité de leurs API, afin qu'elles puissent être mieux utilisées.
défaut
Les inconvénients de l'utilisation de la fonctionnalité de possibilité de valeur nulle incluent :
- La syntaxe est lourde et chaque type ou membre nullable doit être explicitement marqué ;
- La fonctionnalité de nullité n'était pas prise en charge dans les versions antérieures de C#, et un code plus lourd était nécessaire pour éviter les exceptions de référence nulles ;
- Les bases de code non prises en charge peuvent provoquer des avertissements de nullité, qui doivent être désactivés manuellement.
par rapport au précédent
Dans les versions antérieures de C#, les types de référence null ne peuvent pas être vérifiés de manière statique. Par conséquent, des vérifications null doivent être effectuées au moment de l'exécution, ce qui peut facilement entraîner des exceptions de référence null. Afin d'éviter cette situation, les développeurs doivent généralement vérifier manuellement si chaque type de référence est nul, en ajoutant beaucoup de code de vérification nul dans le code.
En C # 8, la fonctionnalité de nullabilité est introduite, qui peut vérifier statiquement le type de référence null au moment de la compilation, évitant ainsi un code de vérification null encombrant.
Voici deux exemples d'utilisation de la fonctionnalité de possibilité de valeur nulle :
#nullable enable
string? str = null;
Console.WriteLine(str.Length); // 编译时会提示可能出现空引用异常
List<string> list = new List<string>() { "apple", null, "banana" };
foreach (string? item in list)
{
Console.WriteLine(item?.Length); // 使用null条件运算符来避免空引用异常
}
#nullable disable
Résumer
La fonctionnalité nullability est une fonctionnalité importante du langage C# qui permet aux développeurs de marquer explicitement si un type ou un membre est nullable et de le vérifier statiquement au moment de la compilation. L'utilisation de la fonction de capacité nulle peut réduire le risque d'exceptions de référence nulle et améliorer la sécurité et la lisibilité du code. Dans le même temps, cela oblige également les développeurs à déployer des efforts supplémentaires pour marquer les types ou membres nullables et traiter les éventuels avertissements de nullabilité.