Aviso CA2013: Não use ReferenceEquals com tipos de valor
A regra do analisador de código .NET CA2013 está habilitada, por padrão, a partir do .NET 5. Ela produz um aviso de compilação para qualquer código em que ReferenceEquals(Object, Object) seja usado para comparar um ou mais tipos de valor quanto à igualdade.
Descrição das alterações
A partir do .NET 5, o SDK do .NET inclui Analisadores de código-fonte do .NET. Várias dessas regras estão habilitadas, por padrão, inclusive CA2013. Se seu projeto contiver código que viole essa regra e estiver configurado para tratar avisos como erros, essa alteração poderá interromper o build.
A regra CA2013 localiza instâncias em que ReferenceEquals(Object, Object) é usada para comparar um ou mais tipos de valor quanto à igualdade. Essa forma de comparação de tipos de valor quanto à igualdade pode levar a resultados incorretos, pois os valores são demarcados antes de serem comparados. ReferenceEquals(Object, Object) retornará false
, mesmo se os valores comparados representarem a mesma instância de um tipo de valor.
Versão introduzida
5,0
Ação recomendada
Altere o código para usar um operador de igualdade apropriado, como
==
. Você não deve suprimir este aviso.Para desabilitar completamente a análise de código, defina
EnableNETAnalyzers
comofalse
em seu arquivo de projeto. Para obter mais informações, confira EnableNETAnalyzers.
APIs afetadas
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