Si quiero usar objetos como las claves para un Dictionary
, ¿qué métodos debo anular para que se puedan comparar de una manera específica?Usar un objeto como una clave de diccionario genérica
decir que tengo una clase que tiene propiedades:
class Foo {
public string Name { get; set; }
public int FooID { get; set; }
// elided
}
Y quiero crear una:
Dictionary<Foo, List<Stuff>>
Quiero Foo
objetos con el mismo FooID
a ser considerado el mismo grupo. ¿Qué métodos necesitaré anular en la clase Foo
?
En resumen: quiero categorizar Stuff
objetos en listas, agrupadas por objetos Foo
. Stuff
objetos tendrán un FooID
para vincularlos a su categoría.
+1 y no me refiero a secuestrar este hilo, pero tenía la impresión de que GetHashCode() debería devolver FooId.GetHashCode(). ¿No es este el patrón correcto? –
@Ken - bueno, solo necesita devolver un int que proporciona las características necesarias. Qué FooID funcionará tan bien como FooID.GetHashCode(). Como detalle de implementación, Int32.GetHashCode() es "return this;". Para otros tipos (cadena, etc.), entonces sí: .GetHashCode() sería muy útil. –
Gracias! Fui con IEqualityComparer ya que era solo para Dicarionary que necesitaba los métodos modificados. –
Dana