CA1861 : éviter les tableaux constants en tant qu’arguments
Propriété | Value |
---|---|
Identificateur de la règle | CA1861 |
Titre | Éviter les tableaux constants en tant qu’arguments |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | Comme suggestion |
Cause
Un tableau constant de valeurs littérales est passé à une méthode via un appel régulier ou un appel de méthode d’extension.
Description de la règle
Les tableaux constants passés en tant qu’arguments ne sont pas réutilisés lorsqu’ils sont appelés à plusieurs reprises, ce qui implique qu’un nouveau tableau est créé à chaque fois. Si le tableau passé n’est pas muté dans la méthode appelée, envisagez de l’extraire dans un champ static readonly
pour améliorer le niveau de performance.
Notes
Si la méthode appelée mute le tableau passé ou si vous n’êtes pas sûr que la méthode mute le tableau, n’extrayez pas le tableau dans un champ static readonly
. Cela pourrait être un changement cassant. Dans ce cas, il est préférable de supprimer l’avertissement à la place.
Comment corriger les violations
Extrayez des tableaux constants dans des champs static readonly
si le tableau passé n’est pas muté dans la méthode appelée.
L’exemple suivant montre une violation de la règle :
// A method argument
string message = string.Join(" ", new[] { "Hello", "world!" });
' A method argument
Dim message As String = String.Join(" ", {"Hello", "world!"})
L’exemple suivant montre comment la violation de cette règle est corrigée en extrayant l’argument dans un champ static readonly
.
private static readonly string[] array = new[] { "Hello" , "world!" };
private string GetMessage()
{
return string.Join(" ", array);
}
Private Shared ReadOnly array As String() = {"Hello", "world!"}
Private Function GetMessage() As String
Return String.Join(" ", array)
End Function
À présent, la valeur du tableau est résolue au moment de la compilation plutôt qu’au moment de l’exécution, ce qui rend le code plus performant.
Quand supprimer les avertissements
Supprimez une violation de cette règle si :
- L’appel ne s’exécute qu’une seule fois.
- Le tableau peut être muté au sein de la méthode appelée ou vous n’êtes pas sûr qu’il mute.
- Vous n’êtes pas préoccupé par l’impact sur le niveau de performance de la création d’un tableau constant pour chaque appel.
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 CA1861
// The code that's violating the rule is on this line.
#pragma warning restore CA1861
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.CA1861.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.