CA1825 : Éviter les allocations de tableau de longueur nulle

Propriété Value
Identificateur de la règle CA1825
Titre Éviter les allocations de tableau de longueur nulle
Catégorie Performances
Le correctif est cassant ou non cassant Sans rupture
Activé par défaut dans .NET 8 À titre de suggestion

Cause

Un Array vide sans élément est alloué.

Description de la règle

L’initialisation d’un tableau de longueur nulle entraîne une allocation de mémoire inutile. Utilisez plutôt l’instance de tableau vide allouée statiquement en appelant la méthode Array.Empty. L’allocation de mémoire est partagée entre tous les appels de cette méthode.

Comment corriger les violations

Pour corriger une violation, remplacez l’allocation de tableau de longueur zéro par un appel à Array.Empty. Par exemple, les deux extraits de code suivants montrent une violation de la règle et comment la corriger :

class C
{
    public void M1()
    {
        // Violates rule CA1825.
        var a = new int[0];
    }
}
class C
{
    public void M1()
    {
        // Resolves rule CA1825 violation.
        var a = System.Array.Empty<int>();
    }
}

Conseil

Un correctif de code est disponible pour cette règle dans Visual Studio. Pour l’utiliser, positionnez le curseur sur l’allocation de tableau et appuyez sur Ctrl+. (point). Choisissez Utiliser Array.Empty dans la liste des options présentées.

Code fix for CA1825 - use array empty

Quand supprimer les avertissements

Il est sûr de supprimer une violation de cette règle si vous n’êtes pas préoccupé par l’allocation de mémoire supplémentaire.

Remarque

Vous pouvez voir des avertissements de faux positifs de cette règle si tous les éléments suivants s’appliquent :

  • Vous utilisez Visual Studio 2022 version 17.5 ou ultérieure avec une version antérieure du Kit de développement logiciel (SDK) .NET, c’est-à-dire .NET 6 ou version antérieure.
  • Vous utilisez les analyseurs du Kit de développement logiciel (SDK) .NET 6 ou d’une version antérieure des packages d’analyseurs, comme Microsoft.CodeAnalysis.FxCopAnalyzers.
  • Vous utilisez un tableau de longueur nulle comme argument d’attribut, le plus souvent en tant que paramètre params.

Les faux positifs sont dus à un changement cassant dans le compilateur C#. Envisagez d’utiliser un analyseur plus récent qui contient le correctif pour les avertissements faux positifs. Effectuez une mise à niveau vers Microsoft.CodeAnalysis.NetAnalyzers version 7.0.0-préversion1.22464.1 ou ultérieure ou utilisez les analyseurs du Kit de développement logiciel (SDK) .NET 7.

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 CA1825
// The code that's violating the rule is on this line.
#pragma warning restore CA1825

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.CA1825.severity = none

Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.

Voir aussi