Sobes.tech
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:

  1. Sobrescribir el método Equals(object obj) de modo que compare correctamente los objetos de tu clase por sus campos significativos.
  2. 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.