J'implémente un GetHashCode personnalisé pour la classe System.Drawing.Point en C#. Ma méthode échoue actuellement l'exigence suivante:Générateur de code de hachage le plus rapide .NET
var hashA = MyGetHashCode(new Point(1, 0));
var hashB = MyGetHashCode(new Point(0, 1));
var hashC = MyGetHashCode(new Point(0, 0));
var hashD = MyGetHashCode(new Point(1, 1));
Assert.AreNotEqual(hashA^hashB, hashC^hashD);
Pour réussir ce test, je suis sûr que l'utilisation de nouvelles SHA256Managed() ComputeHash (de currentHash) fera.. Mais il y a un autre algorithme de hachage plus rapide? Je sais que SHA256 est une question de sécurité, et je n'en ai pas besoin.
Comment avez-vous eu l'idée que votre fonction de hachage devrait passer ce test? – mquander
@ mquander Semble sûrement étrange, mais d'autres fonctions Equals de classe reposent sur une implémentation GetHashCode simple, qui à son tour repose sur ma méthode personnalisée Point.GetHashCode –
@mquander Il ne s'agit pas de répéter le code dans Equals et GetHashCode, et de les rendre équivalents. –