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.
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de