Junior — Middle
¿Qué pasos se deben seguir para usar una clase propia como clave en una colección de tipo diccionario?
sobes.tech AI
Respuesta de la IA
Para usar una clase personalizada como clave en un diccionario (Dictionary<TKey, TValue>) en C#, es necesario garantizar una comparación correcta de las claves y el cálculo de sus códigos hash. Para ello, debes:
- Sobrescribir el método
Equals(object obj)de modo que compare correctamente los objetos de tu clase por sus campos significativos. - Sobrescribir el método
GetHashCode()para que los objetos considerados iguales tengan el mismo código hash.
Ejemplo:
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);
}
}
Alternativamente, puedes implementar la interfaz IEqualityComparer<T> y pasarla al constructor del diccionario si no quieres modificar la clase misma.