Maison >développement back-end >Tutoriel C#.Net >Vérifiez si deux objets SortedDictionary sont égaux en C#

Vérifiez si deux objets SortedDictionary sont égaux en C#

WBOY
WBOYavant
2023-08-31 15:25:09905parcourir

在 C# 中检查两个 SortedDictionary 对象是否相等

SortedDictionary en C# est une implémentation basée sur un arbre binaire qui maintient ses éléments dans l'ordre des clés. Il s'agit d'une collection de paires clé/valeur triées par clé. Cet article vous guidera étape par étape sur la façon de vérifier si deux objets SortedDictionary sont égaux en C#. Enfin, vous apprendrez à déterminer si deux objets SortedDictionary contiennent les mêmes éléments et sont égaux.

Comprendre SortedDictionary en C#

Avant de continuer, il est crucial de comprendre ce qu'est un SortedDictionary. Il s'agit d'une collection basée sur une arborescence binaire en C# qui stocke les paires clé-valeur dans l'ordre trié des clés. Il fait partie de l'espace de noms System.Collections.Generic.

Ceci est un exemple de SortedDictionary -

SortedDictionary<string, int> sortedDict = new SortedDictionary<string, int>() {
   {"One", 1},
   {"Two", 2},
   {"Three", 3}
};

Utilisez SequenceEqual pour comparer deux objets SortedDictionary

L'un des moyens les plus simples de vérifier si deux objets SortedDictionary sont égaux est d'utiliser la méthode SequenceEqual de l'espace de noms System.Linq. Étant donné que SortedDictionary conserve automatiquement l'ordre des éléments en fonction de la clé, vous pouvez utiliser SequenceEqual directement à des fins de comparaison.

Exemple

Voici un extrait de code démontrant cela -

using System;
using System.Collections.Generic;
using System.Linq;

public class Program {
   public static void Main() {
      SortedDictionary<string, int> sortedDict1 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };

      SortedDictionary<string, int> sortedDict2 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };

      bool areEqual = sortedDict1.SequenceEqual(sortedDict2);
      
      Console.WriteLine("SortedDictionaries equal: " + areEqual);
   }
}

Sortie

SortedDictionaries equal: True

Utilisez EqualityComparer personnalisé

Si vous souhaitez comparer en fonction des valeurs de SortedDictionaries au lieu de clés, ou si vous souhaitez implémenter une logique de comparaison complexe, vous pouvez utiliser un EqualityComparer personnalisé.

Exemple

Voici comment procéder −

using System;
using System.Collections.Generic;
using System.Linq;

class DictionaryComparer<TKey, TValue> : IEqualityComparer<SortedDictionary<TKey, TValue>> {
   public bool Equals(SortedDictionary<TKey, TValue> x, SortedDictionary<TKey, TValue> y) {
      // Check whether the dictionaries are equal
      return x.Count == y.Count && !x.Except(y).Any();
   }

   public int GetHashCode(SortedDictionary<TKey, TValue> obj) {
      int hash = 0;
      foreach (var pair in obj) {
         hash ^= pair.GetHashCode();
      }
      return hash;
   }
}

public class Program {
   public static void Main() {
      SortedDictionary<string, int> sortedDict1 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };

      SortedDictionary<string, int> sortedDict2 = new SortedDictionary<string, int>() {
         {"One", 1},
         {"Two", 2},
         {"Three", 3}
      };
      
      DictionaryComparer<string, int> comparer = new DictionaryComparer<string, int>();
      bool areEqual = comparer.Equals(sortedDict1, sortedDict2);

      Console.WriteLine("SortedDictionaries equal: " + areEqual);
   }
}

Dans cet exemple, nous créons un comparateur d'égalité personnalisé qui implémente l'interface IEqualityComparer. La méthode Equals vérifie si deux SortedDictionary ont le même nombre d'éléments et s'il y a des éléments dans le premier SortedDictionary qui ne sont pas dans le deuxième SortedDictionary.

Sortie

SortedDictionaries equal: True

Conclusion

En C#, vous pouvez vérifier si deux objets SortedDictionary sont égaux à l'aide de la méthode SequenceEqual ou d'un EqualityComparer personnalisé. Bien que la méthode SequenceEqual soit rapide et simple, un EqualityComparer personnalisé fournit une solution plus flexible pour des exigences de comparaison plus complexes. Ce comparateur personnalisé peut être personnalisé selon vos besoins spécifiques, y compris des comparaisons basées sur des valeurs ou toute autre logique personnalisée.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Exceptions en C#Article suivant:Exceptions en C#