Sobes.tech
Junior — Middle

Miks on oluline klassides üle kirjutada meetod GetHashCode?

sobes.tech AI

Vastus AI-lt

GetHashCode meetodi üleviimine on oluline objektide õige toimimise jaoks hash-põhistes kogumites, nagu Dictionary, HashSet ja teistes.

Põhjused:

  • GetHashCode tagastab numbrilise väärtuse, mida kasutatakse objekti kiireks otsimiseks hash-tabelites.
  • Kui kaks objekti peetakse võrdseteks (Equals meetodi järgi), peavad nad tagastama sama hash-koodi, et kogumikud saaksid neid õigesti töödelda.
  • Kui GetHashCode ei ole koos Equals-iga üleviidud, võivad objektid olla valesti võrreldud või duplitseeritud kogumites.

Näide:

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

Sellisel viisil tagab GetHashCode ühilduvuse Equals-iga ja objekti õige toimimise hash-struktuurides.