CA2264: No pasar un valor que no acepta valores NULL a 'ArgumentNullException.ThrowIfNull'
Propiedad | Value |
---|---|
Identificador de la regla | CA2264 |
Título | No pase un valor que no acepta valores NULL a ArgumentNullException.ThrowIfNull |
Categoría | Uso |
La corrección es problemática o no problemática | Poco problemático |
Habilitado de forma predeterminada en .NET 9 | Como advertencia |
Causa
Cuando un valor que se sabe que nunca es NULL se pasa a ArgumentNullException.ThrowIfNull()
, nunca se produce una excepción, lo que convierte la instrucción en una operación no operativa.
Descripción de la regla
ArgumentNullException.ThrowIfNull
produce cuando el argumento pasado es null
. Ciertas construcciones, como estructuras que no aceptan valores NULL (excepto para Nullable<T>), los parámetros de tipo conocidos como structs que no aceptan valores NULL, expresiones 'nameof()' y las expresiones 'new' nunca se conocen como NULL, por lo que ArgumentNullException.ThrowIfNull
nunca se producirán.
En el caso de un struct, dado que ArgumentNullException.ThrowIfNull
acepta un object?
, el struct se conversión boxed, lo que provoca una penalización de rendimiento adicional.
Cómo corregir infracciones
Quite la ArgumentNullException.ThrowIfNull
llamada.
Ejemplo
El siguiente fragmento de código muestra una infracción de CA2264:
static void Print(int value)
{
ArgumentNullException.ThrowIfNull(value);
Console.WriteLine(value);
}
El siguiente fragmento de código corrige la infracción:
static void Print(int value)
{
Console.WriteLine(value.Value);
}
Cuándo suprimir las advertencias
Siempre es seguro suprimir esta advertencia.
Supresión de una advertencia
Si solo quiere suprimir una única infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la regla.
#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264
Para deshabilitar la regla de un archivo, una carpeta o un proyecto, establezca su gravedad en none
del archivo de configuración.
[*.{cs,vb}]
dotnet_diagnostic.CA2264.severity = none
Para obtener más información, consulte Procedimiento para suprimir advertencias de análisis de código.