Share via


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

  • 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 como false em seu arquivo de projeto. Para obter mais informações, confira EnableNETAnalyzers.

APIs afetadas