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.