Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
| Property | valor |
|---|---|
| ID da regra | CA2013 |
| Título | Não use ReferenceEquals com tipos de valor |
| Categoria | Fiabilidade |
| A correção está quebrando ou não quebrando | Sem quebra |
| Habilitado por padrão no .NET 10 | Como aviso |
Motivo
Usando System.Object.ReferenceEquals o método para testar um ou mais tipos de valor para igualdade.
Descrição da regra
Ao comparar valores usando ReferenceEquals, se objA e objB são tipos de valor, eles são encaixotados antes de serem passados para o ReferenceEquals método. Isso significa que, mesmo que objA e objB representem a mesma instância de um tipo de valor, o ReferenceEquals método retorna false, como mostra o exemplo a seguir.
Como corrigir violações
Para corrigir a violação, substitua-a por uma verificação de igualdade mais apropriada, como ==.
int int1 = 1, int2 = 1;
// Violation occurs, returns false.
Console.WriteLine(Object.ReferenceEquals(int1, int2)); // false
// Use appropriate equality operator or method instead
Console.WriteLine(int1 == int2); // true
Console.WriteLine(object.Equals(int1, int2)); // true
Quando suprimir avisos
Não é seguro suprimir uma advertência desta regra. Recomendamos o uso do operador de igualdade mais apropriado, como ==.