Sobes.tech
Junior — Middle

Kuidas mõjutab meetod GetHashCode .NET-s sõnastiku tööd?

sobes.tech AI

Vastus AI-lt

.NET-s kasutatav GetHashCode meetod võimaldab saada objekti hash-koodi, mida kasutatakse hash-tabelites, näiteks sõnedes (Dictionary<TKey, TValue>).

Kui lisate objekti sõnasesse, kutsutakse esmalt välja GetHashCode, et määrata konteiner (bucket), kuhu see salvestatakse. Objekti otsimisel kasutab sõnasta hash-koodi kiireks juurdepääsuks.

Oluline on, et:

  • Kui kaks objekti on võrdsed (Equals meetodi järgi), peavad nende hash-koodid olema samad.
  • Kui hash-koodid erinevad, loetakse objektid erinevateks.

Vale GetHashCode implementatsioon võib põhjustada selle, et sõnastik ei leia võtit, isegi kui see on olemas, või vähendada jõudlust suure kolide arvuga.

Õige implementatsiooni näide:

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

Nii mõjutab GetHashCode sõnastiku õigsust ja tõhusust.