Rumah > Artikel > pembangunan bahagian belakang > Semak sama ada dua objek SortedDictionary adalah sama dalam C#
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.
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} };
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.
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); } }
SortedDictionaries equal: True
Jika anda ingin membandingkan berdasarkan nilai SortedDictionaries dan bukannya kekunci, atau jika anda ingin melaksanakan logik perbandingan yang kompleks, anda boleh menggunakan EqualityComparer tersuai.
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.
SortedDictionaries equal: True
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!