Maison >développement back-end >C++ >Comment maintenir l'égalité des objets et le hachage cohérents en C #?

Comment maintenir l'égalité des objets et le hachage cohérents en C #?

Barbara Streisand
Barbara Streisandoriginal
2025-02-02 15:21:10289parcourir

How to Maintain Consistent Object Equality and Hashing in C#?

La maintenance de cohérence de l'équivalent de l'objet et la valeur de hachage dans le C #

Représentant la méthode égale de la classe FOO pour comparer l'attribut FOOID pour garantir la cohérence de l'objet égal. Cependant, la réécriture de la méthode Gethashcode est également très importante pour se conformer aux règles de ces deux méthodes.

L'importance de la réécriture de GethashCode

Lorsque l'objet est utilisé comme clé dans les structures de données telles que le dictionnaire ou l'ensemble de hachage, GethashCode est utilisé pour déterminer quel canon doit être placé dans quel canon doit être placé. Si le code de hachage des deux objets (défini par Equals) doit être considéré comme différent, ils peuvent ne jamais être comparés, entraînant une évaluation incorrecte de nature égale.

Réalisation de la recommandation de GethashCode

Dans ce cas, la recommandation de Gethashcode est:

Ceci est cohérent avec la logique de la méthode égale.

considération avancée
<code class="language-csharp">public override int GetHashCode() => base.GetHashCode();</code>

Pour les objets plus compliqués impliquant plusieurs attributs dans la même nature, veuillez envisager d'utiliser le type de code de hash dans le cadre moderne ou implémenter le calcul du code de hachage personnalisé:

Ajouter la commodité

Pour le plaisir, vous pouvez considérer la mise en œuvre == et!
<code class="language-csharp">public override int GetHashCode()
{
    unchecked
    {
        int hash = 13;
        hash = (hash * 7) + FooId.GetHashCode();
        hash = (hash * 7) + FooName.GetHashCode();
        return hash;
    }
}</code>

En observant ces principes, il peut assurer le comportement cohérent de la nature égale et du hachage, améliorant ainsi la fiabilité et les performances de l'application.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn