Junior — Middle
Mi a szerepe a GetHashCode metódusnak szótár vagy hash-kollekció használatakor?
sobes.tech MI
Válasz az MI-től
A GetHashCode metódus kulcsszerepet játszik a szótárak (Dictionary) és más hash-kollekciók használatában C#-ban. Visszaad egy egész értéket (hash-kódot), amelyet arra használnak, hogy gyorsan meghatározzák egy objektum helyét a hash-táblában.
Amikor egy objektumot hozzáadsz egy szótárhoz, először a GetHashCode hívódik meg, hogy meghatározza a kosár (bucket) helyét, ahová az elem kerül. Az elem keresésekor a kulcs alapján szintén először a hash-kódot számítják ki, hogy gyorsan megtalálják a megfelelő kosarat, majd a pontos összehasonlításhoz az Equals hívódik.
Fontos, hogy:
- Ha két objektum egyenlő (az Equals true-t ad vissza), akkor a GetHashCode értékük ugyanaz kell legyen.
- A jól elosztott hash-kódok csökkentik az ütközéseket és növelik a teljesítményt.
Felülírás példája:
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);
}
}