Junior — Middle
Kako metoda GetHashCode utiče na rad rečnika u .NET?
sobes.tech АИ
Одговор од АИ
Metoda GetHashCode u .NET se koristi za dobijanje hash koda objekta, koji se primenjuje u hash tabelama, na primer u rečnicima (Dictionary<TKey, TValue>).
Kada dodajete objekat u rečnik, prvo se poziva GetHashCode da odredi korpu (bucket) u kojoj će biti smešten. Prilikom pretraživanja objekta, rečnik koristi hash kod za brzi pristup.
Važno je da:
- Ako su dva objekta jednaka (prema metodi
Equals), njihovi hash kodovi moraju da se poklapaju. - Ako se hash kodovi razlikuju, objekti se smatraju različitim.
Neispravna implementacija GetHashCode može dovesti do toga da rečnik ne može da pronađe ključ, čak i ako je on tamo, ili da smanji performanse zbog velikog broja kolizija.
Primer ispravne implementacije:
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);
}
}
Na ovaj način, GetHashCode utiče na tačnost i efikasnost rada rečnika.