Hoe beïnvloedt de methode GetHashCode de werking van de dictionary in .NET?
sobes.tech AI
Antwoord van AI
De GetHashCode-methode in .NET wordt gebruikt om de hash-code van een object te verkrijgen, die wordt toegepast in hash-tabellen, bijvoorbeeld in woordenboeken (Dictionary<TKey, TValue>).
Wanneer je een object aan een woordenboek toevoegt, wordt eerst GetHashCode aangeroepen om de bak (bucket) te bepalen waar het wordt opgeslagen. Bij het zoeken naar een object gebruikt het woordenboek de hash-code voor snelle toegang.
Het is belangrijk dat:
- Als twee objecten gelijk zijn (volgens de
Equals-methode), hun hash-codes overeenkomen. - Als de hash-codes verschillen, worden de objecten als verschillend beschouwd.
Een onjuiste implementatie van GetHashCode kan ertoe leiden dat het woordenboek de sleutel niet kan vinden, zelfs als deze er is, of de prestaties verminderen door een groot aantal botsingen.
Voorbeeld van een correcte implementatie:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public override bool Equals(object obj)
{
if (obj is Person other)
return Name == other.Name && Age == other.Age;
return false;
}
public override int GetHashCode()
{
return HashCode.Combine(Name, Age);
}
}
Op deze manier beïnvloedt GetHashCode de correctheid en efficiëntie van de werking van het woordenboek.