Próbuję wymyślić sposób nadpisania GetHashCode(), gdy wywołana z Vector2 []. Ten kod generuje unikatowe skróty dla obiektów, o których wiem, że są równe: przekazuję następującej klasie ten sam prostokąt i generowane są różne kody skrótu.Jak hash int [] w C#
public Shape(Rectangle r)
{
edges = new Vector2[4];
edges[0] = new Vector2(0, 0);
edges[1] = new Vector2(r.Width, 0);
edges[2] = new Vector2(r.Width, r.Height);
edges[3] = new Vector2(0, r.Height);
Console.Write(edges.GetHashCode() + "\n");
Position = new Vector2(r.X, r.Y);
}
Tablica Vector2 jest po prostu wiązką elementów int. Jak mogę utworzyć unikatowy skrót dla listy intów?
Może to powinno działać. Czy możesz zamieścić pełny przykład pokazujący dwa równe wektory, które generują różne kody skrótu? –
Tablice nie zawierają kodu skrótu na podstawie zawartości tablicy .. więc ten kod nie będzie działał. Musisz uruchomić własny, lub jeśli korzystasz z .NET 4 użyj [IStructuralEquatable interface] (http://msdn.microsoft.com/en-us/library/system.collections.istructuralequatable.aspx). –
@SimonWhitehead: Naprawdę? Co więc oznacza powrót [Vector2.GetHashCode] (http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.vector2.gethashcode%28v=xnagamestudio.10%29.aspx)? –