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é par défaut dans .NET 8 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.

Voir aussi