Estoy tratando de crear un diccionario en C# que use una matriz booleana para sus claves.Uso de una matriz booleana como clave de diccionario personalizada
Dictionary<bool[], string>
La matriz bool tiene una longitud fija de 1000, y todas son de la misma longitud. Tengo problemas con el código hash y el método común de 'exclusivo o' no tiene tanto sentido debido a la longitud de la matriz.
Las preguntas similares en StackOverflow se tratan con el método 'exclusivo o' en el método GetHashCode. No creo que eso funcione en este contexto. Me gustaría utilizarlo como:
Dictionary<bool[], string> myDict =
new Dictionary<bool[], string>(EqualityComparer);
donde EquaityComparer hace algo como:
public class EqualityComparer : IEqualityComparer<bool[]>
{
public bool Equals(bool[] x, bool[] y)
{
return x.SequenceEqual(y);
}
public int GetHashCode(bool[] x)
{
// this part doesn't work correctly
int hc = x.GetHashCode();
return hc;
}
}
Por supuesto, todas las preocupaciones habituales sobre la matriz bool ser mutable y el tamaño de cualquier clave derivada de ser relevante para el rendimiento se aplican aquí ... aunque no tengo una solución.
En lugar de llamar al predeterminado 'GetHashCode' para' bool [] ', creo que debe implementar el suyo. – FishBasketGordo
'return x.Intersect (y) == x;' tampoco es correcto. Está comparando 'instancias' de' IEnumerable 'y bool array –
Claro. Aterricé usando SequenceEqual para el método equals. Aquí estoy más específicamente necesitando ayuda con el código hash. – Vic