Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

วิธีตรวจสอบว่า SortedList สองตัวเท่ากันหรือไม่ใน C#

บทความนี้สาธิตวิธีการตรวจสอบว่า 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 ของคีย์