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 (
Equalsmeetodi 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.