Sobes.tech
Junior — Middle

Ako ovplyvňuje metóda GetHashCode fungovanie slovníka v .NET?

sobes.tech AI

Odpoveď od AI

Metóda GetHashCode v .NET sa používa na získanie hash kódu objektu, ktorý sa aplikuje v hash tabuľkách, napríklad v slovníkoch (Dictionary<TKey, TValue>).

Keď pridávate objekt do slovníka, najskôr sa volá GetHashCode, aby určil košík (bucket), kam bude uložený. Pri vyhľadávaní objektu slovník používa hash kód pre rýchly prístup.

Je dôležité, aby:

  • Ak sú dva objekty rovnaké (podľa metódy Equals), ich hash kódy sa zhodovali.
  • Ak sa hash kódy líšia, objekty sú považované za odlišné.

Nesprávna implementácia GetHashCode môže spôsobiť, že slovník nenájde kľúč, aj keď je tam, alebo zníži výkon kvôli veľkému počtu kolízií.

Príklad správnej implementácie:

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

Takto GetHashCode ovplyvňuje správnosť a efektívnosť práce slovníka.