Sobes.tech
Junior — Middle

Koja je uloga metode GetHashCode pri korišćenju rečnika ili hash kolekcije?

sobes.tech АИ

Одговор од АИ

Metoda GetHashCode igra ključnu ulogu u korišćenju rečnika (Dictionary) i drugih hash kolekcija u C#. Ona vraća celobrojnu vrednost (hash kod) koja se koristi za brzo određivanje pozicije objekta u hash tabeli.

Kada dodajete objekat u rečnik, prvo se poziva GetHashCode da odredi korpu (bucket) u koju će biti smešten element. Prilikom pretraživanja elementa po ključu, takođe se prvo izračunava hash kod da bi se brzo pronašla odgovarajuća korpa, a zatim se poziva Equals za tačno poređenje.

Važno je da:

  • Ako su dva objekta jednaka (Equals vraća true), njihovi GetHashCode treba da vraćaju istu vrednost.
  • Dobro raspoređeni hash kodovi smanjuju broj kolizija i povećavaju performanse.

Primer prepisivanja:

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