en cuenta los siguientes objetos:aplicar GetHashCode() para objetos que contienen colecciones
class Route
{
public int Origin {get; set;}
public int Destination {get; set;}
}
Ruta implementa operadores de igualdad.
class Routing
{
public List<Route> Paths {get; set;}
}
que utiliza el código siguiente para implementar el método GetHashCode para el objeto de enrutamiento y parece que funciona, pero me pregunto si esa es la forma correcta de hacerlo? Confío en los controles de igualdad y, como no estoy seguro, pensé que les preguntaría a ustedes. ¿Puedo resumir los códigos hash o necesito hacer más magia para garantizar el efecto deseado?
public override int GetHashCode()
{
return (Paths != null
? (Paths
.Select(p => p.GetHashCode())
.Sum())
: 0);
}
yo nos registramos varias preguntas GetHashCode() aquí, así como el artículo de MSDN y de Eric Lippert sobre este tema, pero no pudo encontrar lo que estoy buscando.
De esta manera es posible que tenga dos colecciones diferentes con mismo código hash. –
¿Por qué no utilizar el 'GetHashCode' de la Colección en sí? – SimpleVar
@ValBakhtin Solo hay 2 ** 32 códigos hash diferentes, por lo que no todas las colecciones pueden tener las suyas propias. –