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

วิธีสร้างสำเนาลึกของออบเจ็กต์ SortedList ใน C#

ภาพรวม

SortedList (ใน System.Collections) เก็บคู่คีย์/ค่าเรียงตามคีย์ เมธอด Clone() สร้าง shallow copy

ตัวอย่าง 1: Clone SortedList สตริง

using System;
using System.Collections;

public class Demo {
    public static void Main(String[] args) {
        SortedList list = new SortedList();
        list.Add("A", "Jacob");
        list.Add("B", "Sam");
        list.Add("C", "Tom");
        list.Add("D", "John");
        list.Add("E", "Tim");
        list.Add("F", "Mark");
        list.Add("G", "Gary");
        list.Add("H", "Nathan");
        list.Add("I", "Shaun");
        list.Add("J", "David");

        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in list) {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        ICollection col1 = list.Values;
        Console.WriteLine("\nValues...");
        foreach (string s in col1)
            Console.WriteLine(s);

        ICollection col2 = list.Keys;
        Console.WriteLine("\nKeys...");
        foreach (string s in col2)
            Console.WriteLine(s);

        SortedList list2 = (SortedList)list.Clone();

        Console.WriteLine("\nResultant SortedList...cloned from above list");
        foreach (DictionaryEntry d in list) {
            Console.WriteLine(d.Key + " " + d.Value);
        }
    }
}

ผลลัพธ์ตัวอย่าง 1

SortedList elements...
A Jacob
B Sam
C Tom
D John
E Tim
F Mark
G Gary
H Nathan
I Shaun
J David
Values...
Jacob
Sam
Tom
John
Tim
Mark
Gary
Nathan
Shaun
David
Keys...
A
B
C
D
E
F
G
H
I
J
Resultant SortedList...cloned from above list
A Jacob
B Sam
C Tom
D John
E Tim
F Mark
G Gary
H Nathan
I Shaun
J David

ตัวอย่าง 2: SortedList อื่นและ GetValueList

using System;
using System.Collections;

public class Demo {
    public static void Main(String[] args) {
        SortedList list = new SortedList();
        list.Add("One", "IT");
        list.Add("Two ", "Operations");
        list.Add("Three", "Marketing");
        list.Add("Four", "Purchase");
        list.Add("Five", "Sales");
        list.Add("Six", "Finance");

        Console.WriteLine("SortedList elements...");
        foreach (DictionaryEntry d in list) {
            Console.WriteLine(d.Key + " " + d.Value);
        }

        Console.WriteLine("\nList of values...SortedList");
        IList col = list.GetValueList();
        foreach (string res in col) {
            Console.WriteLine(res);
        }

        Console.WriteLine("\nSortedList is read-only? = " + list.IsReadOnly);

        SortedList list2 = (SortedList)list.Clone();

        Console.WriteLine("\nResultant SortedList...cloned from above list");
        foreach (DictionaryEntry d in list) {
            Console.WriteLine(d.Key + " " + d.Value);
        }
    }
}

ผลลัพธ์ตัวอย่าง 2

SortedList elements...
Five Sales
Four Purchase
One IT
Six Finance
Three Marketing
Two Operations
List of values...SortedList
Sales
Purchase
IT
Finance
Marketing
Operations
SortedList is read-only? = False
Resultant SortedList...cloned from above list
Five Sales
Four Purchase
One IT
Six Finance
Three Marketing
Two Operations

สรุป

  • Clone() สร้าง SortedList ใหม่ คัดลอกอ้างอิง (shallow)
  • คีย์ถูกเรียงลำดับอัตโนมัติ (ตามค่าเริ่มต้นของ comparer)
  • GetValueList() และ GetKeyList() คืน IList view