CA1805 : Ne pas initialiser inutilement
Propriété | Value |
---|---|
Identificateur de la règle | CA1805 |
Titre | Ne pas initialiser inutilement |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | Non |
Cause
Un champ d’une classe est explicitement initialisé à la valeur par défaut du type de ce champ.
Description de la règle
Le runtime .NET initialise tous les champs des types référence à leurs valeurs par défaut avant d’exécuter le constructeur. Dans la plupart des cas, l’initialisation explicite d’un champ à sa valeur par défaut dans un constructeur est redondante, entraîne des coûts de maintenance et risque de dégrader les performances (par exemple avec une taille d’assembly accrue), et l’initialisation explicite peut être supprimée.
Comment corriger les violations
Dans la plupart des cas, le correctif approprié consiste à supprimer l’initialisation inutile.
class C
{
// Violation
int _value1 = 0;
// Fixed
int _value1;
}
Dans certains cas, la suppression de l’initialisation peut entraîner l’émission d’avertissements CS0649 ultérieurs, car le champ conserve sa valeur par défaut indéfiniment. Dans ce cas, une meilleure solution peut consister à supprimer entièrement le champ ou à le remplacer par une propriété :
class C
{
// Violation
private static readonly int s_value = 0;
// Fixed
private static int Value => 0;
}
Quand supprimer les avertissements
Vous pouvez toujours supprimer sans risque l’avertissement, car il met simplement en évidence le code et le travail potentiellement inutile qui peut être évité.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA1805
// The code that's violating the rule is on this line.
#pragma warning restore CA1805
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA1805.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.