Sobes.tech
Junior — Middle

Cum influențează metoda GetHashCode funcționarea dicționarului în .NET?

sobes.tech AI

Răspuns de la AI

Metoda GetHashCode în .NET este utilizată pentru obținerea codului hash al unui obiect, care este aplicat în tabelele hash, de exemplu, în dicționare (Dictionary<TKey, TValue>).

Când adăugați un obiect în dicționar, mai întâi se apelează GetHashCode pentru a determina coșul (bucket) în care va fi stocat. La căutarea unui obiect, dicționarul folosește codul hash pentru acces rapid.

Este important ca:

  • Dacă două obiecte sunt egale (conform metodei Equals), codurile lor hash trebuie să coincidă.
  • Dacă codurile hash diferă, obiectele sunt considerate diferite.

O implementare incorectă a GetHashCode poate duce la imposibilitatea dicționarului de a găsi cheia, chiar dacă aceasta există, sau la scăderea performanței din cauza unui număr mare de coliziuni.

Exemplu de implementare corectă:

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

Astfel, GetHashCode influențează corectitudinea și eficiența funcționării dicționarului.