Maison >développement back-end >C++ >Devriez-vous remplacer GethashCode lors de la maîtrise de l'ampoule est égal à .NET?
Lorsque vous définissez des types personnalisés dans .NET, si nécessaire, non seulement vous devez réécrire la méthode Equals, mais également réécrire la méthode GethashCode, ce qui est très important. Ceci est particulièrement important lorsque le type est utilisé comme clé dans une collection de dictionnaires et d'ensembles de hachage.
Pourquoi réécrit GethashCode?GethashCode est responsable de la génération du code de hachage pour les objets. Sans comparateurs personnalisés, collectant ce code de hachage pour déterminer le programme approprié de trouver des objets. Si le code de hachage des deux objets est le même, il est supposé qu'ils sont situés dans le même seau, et ce n'est qu'à ce moment-là, les égaux seront appelés pour effectuer des vérifications égales plus détaillées.
La méthode préférée de Gethashcode
Compte tenu de la classe FOO fournie, la réécriture des égaux est comparée sur la base de l'attribut FOOID. Cette méthode est cohérente avec Equals Logic pour s'assurer que les objets avec le même FOOID ont le même code de hachage.
Les conséquences d'une réécriture incorrecte de Gethashcode
Ignorez la réécriture de GethashCode et utilisez l'implémentation par défaut, qui entraînera les effets indésirables suivants:
Miss Miss Object Egal Object: Si les deux objets sont réellement égaux mais ont des codes de hachage différents, ils peuvent ne jamais être considérés comme égaux car ils n'appellent pas égaux.
Trop de conflits:L'implémentation incorrecte de Gethashcode conduira à des conflits excessifs, et beaucoup d'entre eux sont alloués avec le même code de hachage, ce qui conduit à une faible efficacité de performance.
Transport pratique: Envisageant de fournir la charge == et!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!