Partilhar 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 Utilização
A correção causa interrupção ou não Ininterrupto
Habilitado por padrão no .NET 10 Como aviso
Línguas aplicáveis C# e Visual Basic

Motivo

Um valor que se sabe nunca ser nulo é passado para ArgumentNullException.ThrowIfNull().

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>), parâmetros de tipo conhecidos por serem estruturas não anuláveis, expressões 'nameof()' e expressões 'new' são conhecidas por nunca serem nulas, então ArgumentNullException.ThrowIfNull nunca será lançado. Assim, a chamada ArgumentNullException.ThrowIfNull é desnecessária.

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

Como corrigir violações

Remova a ArgumentNullException.ThrowIfNull chamada.

Exemplo

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

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

O trecho de código a seguir corrige a violação:

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

Quando suprimir avisos

É sempre seguro suprimir este aviso.

Suprimir um aviso

Se você quiser apenas suprimir uma única violação, adicione diretivas de pré-processador ao seu arquivo de origem para desativar e, em seguida, reativar 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 de um arquivo, pasta ou projeto, defina sua gravidade como none no arquivo de configuração.

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

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

Consulte também