Junior — Middle
Jakie kroki należy podjąć, aby użyć własnej klasy jako klucza w kolekcji typu słownik?
sobes.tech AI
Odpowiedź od AI
Aby używać własnej klasy jako klucza w słowniku (Dictionary<TKey, TValue>) w C#, konieczne jest zapewnienie poprawnego porównania kluczy i obliczania ich kodów hash. W tym celu należy:
- Nadpisać metodę
Equals(object obj), tak aby poprawnie porównywała obiekty Twojej klasy po istotnych polach. - Nadpisać metodę
GetHashCode(), aby obiekty uznane za równe miały ten sam kod hash.
Przykład:
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);
}
}
Alternatywnie, można zaimplementować interfejs IEqualityComparer<T> i przekazać go do konstruktora słownika, jeśli nie chce się modyfikować samej klasy.