CA1871 : Ne passez pas de structure nullable à 'ArgumentNullException.ThrowIfNull'
Propriété | Valeur |
---|---|
Identificateur de la règle | CA1871 |
Titre | Ne transmettez pas une struct nullable à « ArgumentNullException.ThrowIfNull » |
Catégorie | Performance |
Le correctif est cassant ou non cassant | Sans rupture |
activé par défaut dans .NET 9 | À titre d'information |
Cause
Lorsqu'une structure nullable, par exemple int?
ou Guid?
, est passée à ArgumentNullException.ThrowIfNull
, elle est convertie en objet, ce qui entraîne une pénalité de performance.
Description de la règle
Pour améliorer les performances, il est préférable de vérifier la propriété HasValue
et de lever manuellement une exception que de passer un struct nullable à ArgumentNullException.ThrowIfNull
.
Comment corriger les violations
Vérifiez s'il y a une valeur nulle et déclenchez manuellement l'exception ArgumentNullException.
Exemple
L’extrait de code suivant montre une violation de CA1871 :
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 si les performances ne sont pas un problème.
Supprimer un avertissement
Si vous souhaitez simplement supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactivez 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 d’un fichier, d’un dossier ou d’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 d’analyse du code.