Compartilhar via


CA2264: Não passar um valor não anulável para 'ArgumentNullException.ThrowIfNull'

Propriedade Valor
ID da regra CA2264
Título Não passe um valor não anulável para ArgumentNullException.ThrowIfNull
Categoria Usage
Correção interruptiva ou sem interrupção Sem interrupção
Habilitado por padrão no .NET 9 Como aviso

Causa

Quando um valor que é conhecido por nunca ser nulo é passado para ArgumentNullException.ThrowIfNull(), uma exceção nunca é lançada, tornando a instrução não operacional.

Descrição da regra

ArgumentNullException.ThrowIfNull lança quando o argumento passado é null. Certas construções, como structs não anuláveis (exceto para Nullable<T>), parâmetros de tipo conhecidos como structs não anuláveis, expressões 'nameof()' e expressões 'new' são conhecidas por nunca serem nulas, portanto ArgumentNullException.ThrowIfNull , nunca serão lançadas.

No caso de um struct, como ArgumentNullException.ThrowIfNull aceita um object?, o struct é encaixotado, o que causa uma penalidade de desempenho adicional.

Como corrigir violações

Remova a ArgumentNullException.ThrowIfNull chamada.

Exemplo

O snippet de código a seguir mostra uma violação do CA2264:

static void Print(int value)
{
    ArgumentNullException.ThrowIfNull(value);
    Console.WriteLine(value);
}

O seguinte snippet de código conserta a violação:

static void Print(int value)
{
    Console.WriteLine(value.Value);
}

Quando suprimir avisos

É sempre seguro suprimir esse aviso.

Suprimir um aviso

Para suprimir apenas uma violação, adicione diretivas de pré-processador ao arquivo de origem a fim de desabilitar e, em seguida, reabilitar a regra.

#pragma warning disable CA2264
// The code that's violating the rule is on this line.
#pragma warning restore CA2264

Para desabilitar a regra em um arquivo, uma pasta ou um projeto, defina a severidade como none no arquivo de configuração.

[*.{cs,vb}]
dotnet_diagnostic.CA2264.severity = none

Para obter mais informações, confira Como suprimir avisos de análise de código.