CA2264 : Ne passez pas de valeur non nullable à « ArgumentNullException.ThrowIfNull ».
Propriété | Value |
---|---|
Identificateur de la règle | CA2264 |
Titre | Ne pas passer une valeur non nullable à ArgumentNullException.ThrowIfNull |
Catégorie | Utilisation |
Le correctif est cassant ou non cassant | Sans rupture |
Activée par défaut dans .NET 9 | Comme avertissement |
Cause
Lorsqu’une valeur connue pour ne jamais être null est passée à ArgumentNullException.ThrowIfNull()
, une exception n’est jamais levée, ce qui rend l’instruction sans opération.
Description de la règle
ArgumentNullException.ThrowIfNull
lève lorsque l’argument passé est null
. Certaines constructions telles que les structs non nullables (à l’exception de Nullable<T>), les paramètres de type connus comme des structs non nullables, des expressions « nameof() » et des expressions « new » sont connus pour ne jamais être null, de sorte ArgumentNullException.ThrowIfNull
qu’ils ne lèveront jamais.
Dans le cas d’un struct, puisque ArgumentNullException.ThrowIfNull
accepte un object?
, le struct est boxé, ce qui entraîne une pénalité de performances supplémentaire.
Comment corriger les violations
Supprimez l’appel ArgumentNullException.ThrowIfNull
.
Exemple
L’extrait de code suivant montre une violation de CA2264 :
static void Print(int value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value);
}
L’extrait de code suivant corrige la violation :
static void Print(int value)
{
Console.WriteLine(value.Value);
}
Quand supprimer les avertissements
Il est toujours sûr de supprimer cet avertissement.
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 CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264
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.CA2264.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.