Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Semak sama ada dua objek SortedDictionary adalah sama dalam C#

Semak sama ada dua objek SortedDictionary adalah sama dalam C#

WBOY
WBOYke hadapan
2023-08-31 15:25:09877semak imbas

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

SortedDictionary dalam C# ialah pelaksanaan berasaskan pokok binari yang mengekalkan elemennya dalam susunan utama. Ia ialah koleksi pasangan kunci/nilai yang diisih mengikut kunci. Artikel ini akan membimbing anda langkah demi langkah tentang cara menyemak sama ada dua objek SortedDictionary adalah sama dalam C#. Akhir sekali, anda akan menjadi mahir dalam menentukan sama ada dua objek SortedDictionary mengandungi elemen yang sama dan sama.

Fahami SortedDictionary dalam C#

Sebelum meneruskan, adalah penting untuk memahami apa itu SortedDictionary. Ia ialah koleksi berasaskan pokok binari dalam C# yang menyimpan pasangan nilai kunci dalam susunan kunci yang diisih. Ia adalah sebahagian daripada ruang nama System.Collections.Generic.

Ini adalah contoh SortedDictionary -

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

Gunakan SequenceEqual untuk membandingkan dua objek SortedDictionary

Salah satu cara paling mudah untuk menyemak sama ada dua objek SortedDictionary adalah sama ialah menggunakan kaedah SequenceEqual daripada ruang nama System.Linq. Memandangkan SortedDictionary secara automatik mengekalkan susunan elemen berdasarkan kunci, anda boleh menggunakan SequenceEqual secara langsung untuk perbandingan.

Contoh

Berikut ialah coretan kod yang menunjukkan perkara ini -

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);
   }
}

Output

SortedDictionaries equal: True

Gunakan EqualityComparer tersuai

Jika anda ingin membandingkan berdasarkan nilai SortedDictionaries dan bukannya kekunci, atau jika anda ingin melaksanakan logik perbandingan yang kompleks, anda boleh menggunakan EqualityComparer tersuai.

Contoh

Begini cara anda boleh melakukannya −

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);
   }
}

Dalam contoh ini, kami mencipta pembanding kesaksamaan tersuai yang melaksanakan antara muka IEqualityComparer. Kaedah Equals menyemak sama ada dua SortedDictionary mempunyai bilangan elemen yang sama dan jika terdapat sebarang elemen dalam SortedDictionary pertama yang tiada dalam SortedDictionary kedua.

Output

SortedDictionaries equal: True

Kesimpulan

Dalam C#, anda boleh menyemak sama ada dua objek SortedDictionary adalah sama menggunakan kaedah SequenceEqual atau EqualityComparer tersuai. Walaupun kaedah SequenceEqual adalah pantas dan mudah, EqualityComparer tersuai menyediakan penyelesaian yang lebih fleksibel untuk keperluan perbandingan yang lebih kompleks. Pembanding tersuai ini boleh disesuaikan dengan keperluan khusus anda, termasuk perbandingan berdasarkan nilai atau mana-mana logik tersuai lain.

Atas ialah kandungan terperinci Semak sama ada dua objek SortedDictionary adalah sama dalam C#. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
Artikel sebelumnya:Pengecualian dalam C#Artikel seterusnya:Pengecualian dalam C#