Sobes.tech
Junior — Middle

Jaká je role metody GetHashCode při použití slovníku nebo hashové kolekce?

sobes.tech AI

Odpověď od AI

Metoda GetHashCode hraje klíčovou roli při používání slovníků (Dictionary) a dalších hash kolekcí v C#. Vrací celočíselnou hodnotu (hash kód), která se používá k rychlému určení pozice objektu v hash tabulce.

Při přidávání objektu do slovníku se nejprve volá GetHashCode, aby se určil koš (bucket), do kterého bude prvek umístěn. Při hledání prvku podle klíče se také nejprve vypočítá hash kód, aby se rychle našel správný koš, a poté se volá Equals pro přesné porovnání.

Je důležité, aby:

  • Pokud jsou dva objekty rovné (Equals vrací true), jejich GetHashCode by měly vracet stejnou hodnotu.
  • Dobře rozložené hash kódy snižují počet kolizí a zvyšují výkon.

Příklad přepsání:

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);
    }
}