Sobes.tech
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.