Junior — Middle
Wat is de rol van de methode GetHashCode bij het gebruik van een woordenboek of hash-collectie?
sobes.tech AI
Antwoord van AI
De methode GetHashCode speelt een cruciale rol bij het gebruik van woordenboeken (Dictionary) en andere hash-verzamelingen in C#. Het retourneert een gehele waarde (hash-code) die wordt gebruikt om snel de positie van een object in de hash-tabel te bepalen.
Wanneer je een object aan een woordenboek toevoegt, wordt eerst GetHashCode aangeroepen om de bak (bucket) te bepalen waarin het element wordt geplaatst. Bij het zoeken naar een element op sleutel wordt eerst de hash-code berekend om snel de juiste bak te vinden, en vervolgens wordt Equals aangeroepen voor een exacte vergelijking.
Het is belangrijk dat:
- Als twee objecten gelijk zijn (Equals retourneert true), dan moeten hun GetHashCode dezelfde waarde retourneren.
- Goed verdeelde hash-codes verminderen het aantal botsingen en verbeteren de prestaties.
Voorbeeld van overschrijving:
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);
}
}