Junior — Middle
In welke gevallen wordt de vergelijking van referentietypen uitgevoerd?
sobes.tech AI
Antwoord van AI
In C# wordt de vergelijking van referentietypen uitgevoerd in de volgende gevallen:
-
Referentievergelijking (ReferenceEquals) — controleert of twee variabelen naar hetzelfde object in het geheugen wijzen.
-
Overriding van Equals() — om de inhoud van objecten te vergelijken, niet hun adressen.
-
Operators == en != — vergelijken standaard referenties voor referentietypen, maar kunnen worden overschreven voor inhoudsvergelijking.
Voorbeeld:
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
Dus, de vergelijking van referentietypen wordt gedaan om te controleren of variabelen naar hetzelfde object verwijzen, of om de inhoud van de objecten te vergelijken als de Equals-methode is overschreven.