Sobes.tech
Junior — Middle

Em que casos é feita a comparação de tipos de dados de referência?

sobes.tech IA

Resposta da IA

No C#, a comparação de tipos de referência é feita nos seguintes casos:

  • Comparação de referências (ReferenceEquals) — verifica se duas variáveis apontam para o mesmo objeto na memória.

  • Sobrescrever Equals() — para comparar o conteúdo dos objetos, não seus endereços.

  • Operadores == e != — por padrão, para tipos de referência, eles comparam referências, mas podem ser sobrecarregados para comparar o conteúdo.

Exemplo:

class Person {
    public string Name;
    public override bool Equals(object obj) {
        if (obj is Person other) {
            return this.Name == other.Name;
        }
        return false;
    }
    public override int GetHashCode() => Name.GetHashCode();
}

var p1 = new Person { Name = "Alice" };
var p2 = new Person { Name = "Alice" };

bool areSameReference = Object.ReferenceEquals(p1, p2); // false
bool areEqual = p1.Equals(p2); // true

Portanto, a comparação de tipos de referência é realizada seja para verificar se as variáveis apontam para o mesmo objeto, ou para comparar o conteúdo dos objetos, se o método Equals for sobrescrito.