Junior — Middle
Jak metoda GetHashCode ovlivňuje fungování slovníku v .NET?
sobes.tech AI
Odpověď od AI
Metoda GetHashCode v .NET se používá k získání hash kódu objektu, který se používá v hash tabulkách, například v slovnících (Dictionary<TKey, TValue>).
Když přidáte objekt do slovníku, nejprve se zavolá GetHashCode, aby určil koš (bucket), kam bude uložen. Při hledání objektu slovník používá hash kód pro rychlý přístup.
Je důležité, aby:
- Pokud jsou dva objekty stejné (podle metody
Equals), jejich hash kódy se shodovaly. - Pokud se hash kódy liší, objekty jsou považovány za odlišné.
Nesprávná implementace GetHashCode může způsobit, že slovník nenajde klíč, i když je tam, nebo sníží výkon kvůli velkému počtu kolizí.
Příklad správné implementace:
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);
}
}
Tímto způsobem GetHashCode ovlivňuje správnost a efektivitu práce slovníku.