Sobes.tech
Junior — Middle

Aká je úloha metódy GetHashCode pri používaní slovníka alebo hash kolekcie?

sobes.tech AI

Odpoveď od AI

Metóda GetHashCode zohráva kľúčovú úlohu pri používaní slovníkov (Dictionary) a iných hash kolekcií v C#. Vráti celočíselnú hodnotu (hash kód), ktorá sa používa na rýchle určenie pozície objektu v hash tabuľke.

Keď pridávate objekt do slovníka, najskôr sa volá GetHashCode, aby sa určil koš (bucket), do ktorého bude prvok umiestnený. Pri hľadaní prvku podľa kľúča sa tiež najskôr vypočíta hash kód, aby sa rýchlo našiel správny koš, a potom sa volá Equals na presné porovnanie.

Dôležité je, aby:

  • Ak sú dva objekty rovnaké (Equals vracia true), ich GetHashCode by mal vracať rovnakú hodnotu.
  • Dobre rozložené hash kódy znižujú počet kolízií a zvyšujú výkon.

Príklad prepísania:

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