Sobes.tech
Junior — Middle

Milyen esetekben történik referencia típusok összehasonlítása?

sobes.tech MI

Válasz az MI-től

C#-ban a referenciatípusok összehasonlítása a következő esetekben történik:

  • ReferenceEquals összehasonlítás — ellenőrzi, hogy két változó ugyanarra az objektumra mutat-e a memóriában.

  • Equals() felülírása — az objektumok tartalmának összehasonlítására, nem a címeikéhez.

  • == és != operátorok — alapértelmezés szerint referenciatípusok esetén a referenciákat hasonlítják össze, de felülírhatók tartalom szerinti összehasonlításra.

Példa:

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

Ezért a referenciatípusok összehasonlítása vagy azonos objektumra mutató változók ellenőrzésére történik, vagy az Equals metódus felülírása esetén az objektumok tartalmának összehasonlására.