ภาพรวม
เมธอด Clone() ของ ArrayList สร้าง shallow copy (สำเนาลึก) หมายถึงอาร์เรย์ใหม่อ้างอิงออบเจ็กต์เดิม (สำหรับ reference type) สำหรับ value type จะคัดลอกค่า
ตัวอย่าง 1: Clone ArrayList สตริง
using System;
using System.Collections;
public class Demo {
public static void Main() {
ArrayList list = new ArrayList();
list.Add("One");
list.Add("Two");
list.Add("Three");
list.Add("Four");
list.Add("Five");
list.Add("Six");
list.Add("Seven");
list.Add("Eight");
Console.WriteLine("ArrayList elements...");
foreach (string str in list) {
Console.WriteLine(str);
}
Console.WriteLine("ArrayList is read-only? = " + list.IsReadOnly);
Console.WriteLine("Does the element Six in the ArrayList? = " + list.Contains("Six"));
list.Insert(4, "Twelve");
Console.WriteLine("\nArrayList elements...UPDATED");
foreach (string str in list) {
Console.WriteLine(str);
}
ArrayList list2 = new ArrayList();
list2 = (ArrayList)list.Clone();
Console.WriteLine("\nCloned ArrayList...");
foreach (string str in list2) {
Console.WriteLine(str);
}
}
}
ผลลัพธ์ตัวอย่าง 1
ArrayList elements... One Two Three Four Five Six Seven Eight ArrayList is read-only? = False Does the element Six in the ArrayList? = True ArrayList elements...UPDATED One Two Three Four Twelve Five Six Seven Eight Cloned ArrayList... One Two Three Four Twelve Five Six Seven Eight
ตัวอย่าง 2: Clone หลังลบสมาชิก
using System;
using System.Collections;
public class Demo {
public static void Main(String[] args) {
ArrayList list1 = new ArrayList();
list1.Add("A");
list1.Add("B");
list1.Add("C");
list1.Add("D");
list1.Add("E");
list1.Add("F");
list1.Add("G");
list1.Add("H");
list1.Add("I");
Console.WriteLine("Elements in ArrayList1...");
foreach (string res in list1) {
Console.WriteLine(res);
}
ArrayList list2 = new ArrayList();
list2.Add("A");
list2.Add("B");
list2.Add("C");
list2.Add("D");
list2.Add("E");
list2.Add("F");
list2.Add("G");
list2.Add("H");
list2.Add("I");
list2.Add("G");
list2.Add("I");
Console.WriteLine("Elements in ArrayList2...");
foreach (string res in list2) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in ArrayList2 = " + list2.Count);
list2.Remove("G");
Console.WriteLine("Elements in ArrayList2... (UPDATED)");
foreach (string res in list2) {
Console.WriteLine(res);
}
Console.WriteLine("Count of elements in ArrayList2 (Updated) = " + list2.Count);
ArrayList list3 = new ArrayList();
list3 = (ArrayList)list2.Clone();
Console.WriteLine("\nCloned ArrayList from ArrayList2...");
foreach (string str in list3) {
Console.WriteLine(str);
}
}
}
ผลลัพธ์ตัวอย่าง 2
Elements in ArrayList1... A B C D E F G H I Elements in ArrayList2... A B C D E F G H I G I Count of elements in ArrayList2 = 11 Elements in ArrayList2... (UPDATED) A B C D E F H I G I Count of elements in ArrayList2 (Updated) = 10 Cloned ArrayList from ArrayList2... A B C D E F H I G I
สรุป
Clone()สร้าง ArrayList ใหม่ คัดลอกอ้างอิง (shallow)- สำหรับ string (immutable) ทำงานเหมือน deep copy
- ใช้
IsReadOnly,Contains(),Insert(),Remove()จัดการข้อมูล