Sobes.tech
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.