CA1871 : Ne passez pas de struct nullable à ' ArgumentNullException.ThrowIfNull'
Propriété | Value |
---|---|
Identificateur de la règle | CA1871 |
Titre | Ne passez pas de struct nullable à ' ArgumentNullException.ThrowIfNull' |
Catégorie | Performances |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | En tant qu’informations |
Cause
Lorsqu’un struct nullable, par exemple, int?
est Guid?
passé à ArgumentNullException.ThrowIfNull
, il est boxé à un objet, ce qui entraîne une pénalité de performances.
Description de la règle
Pour améliorer les performances, il est préférable de case activée la HasValue
propriété et de lever manuellement une exception que de passer un struct nullable à ArgumentNullException.ThrowIfNull
.
Comment corriger les violations
Recherchez null et lèvez la valeur ArgumentNullException manuellement.
Exemple
L’extrait de code suivant montre une violation de l’autorité de certification 1871 :
static void Print(int? value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value.Value);
}
L’extrait de code suivant corrige la violation :
static void Print(int? value)
{
if (!value.HasValue)
{
throw new ArgumentNullException(nameof(value));
}
Console.WriteLine(value.Value);
}
Quand supprimer les avertissements
Vous pouvez supprimer cet avertissement sans risque, si les performances ne sont pas un problème.
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 CA1871
// The code that's violating the rule is on this line.
#pragma warning restore CA1871
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.CA1871.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.