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