บทความนี้สาธิตวิธีการตรวจสอบว่า SortedList สองตัวเท่ากันหรือไม่ โดยใช้ method Equals(object obj)
ตัวอย่างที่ 1: เปรียบเทียบ SortedList ที่ต่างกันและอ้างอิงเดียวกัน
using System;
using System.Collections;
public class Demo
{
public static void Main(String[] args)
{
SortedList list1 = new SortedList();
list1.Add("One", 1);
list1.Add("Two", 2);
list1.Add("Three", 3);
list1.Add("Four", 4);
list1.Add("Five", 5);
list1.Add("Six", 6);
list1.Add("Seven", 7);
list1.Add("Eight", 8);
list1.Add("Nine", 9);
list1.Add("Ten", 10);
Console.WriteLine("SortedList1 elements...");
foreach (DictionaryEntry d in list1)
{
Console.WriteLine(d.Key + " " + d.Value);
}
SortedList list2 = new SortedList();
list2.Add("A", "Accessories");
list2.Add("B", "Books");
list2.Add("C", "Smart Wearable Tech");
list2.Add("D", "Home Appliances");
Console.WriteLine("\nSortedList2 elements...");
foreach (DictionaryEntry d in list2)
{
Console.WriteLine(d.Key + " " + d.Value);
}
SortedList list3 = new SortedList();
list3 = list2; // อ้างอิง object เดียวกัน
Console.WriteLine("\nIs SortedList2 equal to SortedList3? = " + list3.Equals(list2));
}
}
ผลลัพธ์
SortedList1 elements... Eight 8 Five 5 Four 4 Nine 9 One 1 Seven 7 Six 6 Ten 10 Three 3 Two 2 SortedList2 elements... A Accessories B Books C Smart Wearable Tech D Home Appliances Is SortedList2 equal to SortedList3? = True
ตัวอย่างที่ 2: เปรียบเทียบ SortedList ที่มีข้อมูลต่างกัน
using System;
using System.Collections;
public class Demo
{
public static void Main(String[] args)
{
SortedList list1 = new SortedList();
list1.Add("One", 1);
list1.Add("Two", 2);
list1.Add("Three", 3);
list1.Add("Four", 4);
list1.Add("Five", 5);
list1.Add("Six", 6);
list1.Add("Seven", 7);
list1.Add("Eight", 8);
list1.Add("Nine", 9);
list1.Add("Ten", 10);
Console.WriteLine("SortedList1 elements (key-value pairs)...");
foreach (DictionaryEntry d in list1)
{
Console.WriteLine(d.Key + " " + d.Value);
}
SortedList list2 = new SortedList();
list2.Add("A", "Accessories");
list2.Add("B", "Books");
list2.Add("C", "Smart Wearable Tech");
list2.Add("D", "Home Appliances");
Console.WriteLine("\nSortedList2 elements (key-value pairs)...");
foreach (DictionaryEntry d in list2)
{
Console.WriteLine(d.Key + " " + d.Value);
}
Console.WriteLine("\nIs SortedList2 equal to SortedList1? = " + list2.Equals(list1));
}
}
ผลลัพธ์
SortedList1 elements (key-value pairs)... Eight 8 Five 5 Four 4 Nine 9 One 1 Seven 7 Six 6 Ten 10 Three 3 Two 2 SortedList2 elements (key-value pairs)... A Accessories B Books C Smart Wearable Tech D Home Appliances Is SortedList2 equal to SortedList1? = False
คำอธิบายเพิ่มเติม
Equals(object obj)ของ SortedList ตรวจสอบ reference equality (ชี้ไป object เดียวกัน) ไม่ใช่ value equality- list3 = list2 ทำให้ทั้งสองชี้ไป object เดียวกัน จึงได้ True
- list1 และ list2 เป็น object คนละตัว แม้ข้อมูลจะเหมือนกันก็ได้ False
- ถ้าต้องการเปรียบเทียบค่า (value equality) ต้องวนลูปเปรียบเทียบเอง หรือใช้ LINQ:
list1.Cast<DictionaryEntry>().SequenceEqual(list2.Cast<DictionaryEntry>()) - SortedList จัดเรียงตามคีย์อัตโนมัติ - ลำดับใน output เป็น alphabetical order ของคีย์