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.