Compartilhar via


CA2264: Não passe 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 um no-op.

Descrição da regra

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

No caso de uma struct, desde ArgumentNullException.ThrowIfNull que aceite um object?, a struct é encaixotada, o que causa uma penalidade adicional de desempenho.

Como corrigir violações

Remova a ArgumentNullException.ThrowIfNull chamada.

Exemplo

O seguinte trecho de código mostra uma violação de 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.