Để xóa tất cả các phần tử khỏi ArrayList trong C#, bạn sử dụng phương thức Clear(). Phương thức này loại bỏ tất cả các mục và đặt thuộc tính Count về 0.
Ví dụ 1: Xóa tất cả và so sánh tham chiếu
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("Các phần tử trong 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");
Console.WriteLine("\nCác phần tử trong ArrayList2...");
foreach (string res in list2)
{
Console.WriteLine(res);
}
// Tạo tham chiếu list3 trỏ đến list2
ArrayList list3 = list2;
Console.WriteLine("\nArrayList3 bằng ArrayList2? = " + list3.Equals(list2));
Console.WriteLine("Số lượng phần tử trong ArrayList2 = " + list2.Count);
// Xóa tất cả phần tử
list2.Clear();
Console.WriteLine("Số lượng phần tử trong ArrayList2 (đã cập nhật) = " + list2.Count);
}
}
Kết quả
Các phần tử trong ArrayList1... A B C D E F G H I Các phần tử trong ArrayList2... A B C D E F G H I ArrayList3 bằng ArrayList2? = True Số lượng phần tử trong ArrayList2 = 9 Số lượng phần tử trong ArrayList2 (đã cập nhật) = 0
Ví dụ 2: ArrayList đơn giản
using System;
using System.Collections;
public class Demo
{
public static void Main(string[] args)
{
ArrayList arrList = new ArrayList();
arrList.Add("One");
arrList.Add("Two");
arrList.Add("Three");
arrList.Add("Four");
arrList.Add("Five");
Console.WriteLine("Các phần tử trong ArrayList...");
foreach (string res in arrList)
{
Console.WriteLine(res);
}
Console.WriteLine("Số lượng phần tử trong ArrayList = " + arrList.Count);
arrList.Clear();
Console.WriteLine("Số lượng phần tử trong ArrayList (đã cập nhật) = " + arrList.Count);
}
}
Kết quả
Các phần tử trong ArrayList... One Two Three Four Five Số lượng phần tử trong ArrayList = 5 Số lượng phần tử trong ArrayList (đã cập nhật) = 0
Lưu ý quan trọng về tham chiếu
⚠️ Cảnh báo:
ArrayList list3 = list2; tạo tham chiếu (reference) đến cùng một đối tượng, không phải bản sao. Khi list2.Clear() được gọi, list3.Count cũng trả về 0 vì chúng trỏ đến cùng bộ nhớ.
// Để tạo bản sao độc lập: ArrayList list3 = new ArrayList(list2); // Copy constructor // Hoặc ArrayList list3 = new ArrayList(); list3.AddRange(list2);
Clear() vs Capacity
ArrayList list = new ArrayList();
list.Add("A");
list.Add("B");
list.Add("C");
Console.WriteLine($"Count: {list.Count}, Capacity: {list.Capacity}");
// Count: 3, Capacity: 4 (mặc định gấp đôi)
list.Clear();
Console.WriteLine($"Count: {list.Count}, Capacity: {list.Capacity}");
// Count: 0, Capacity: 4 (Capacity KHÔNG thay đổi)
// Để giải phóng bộ nhớ:
list.TrimToSize(); // Capacity = 0
// Hoặc gán null để GC thu gom
list = null;
ArrayList vs List<T> (Khuyến nghị)
| Đặc điểm | ArrayList | List<T> |
|---|---|---|
| Type-safe | Không (object) | Có (Generic) |
| Hiệu năng | Boxing/Unboxing | Không boxing |
| Clear() | Có | Có |
| Trạng thái | Đã lỗi thời | Khuyến nghị |
// List<T> - cách hiện đại
List<string> list = new List<string> { "One", "Two", "Three" };
list.Clear(); // Tương tự nhưng type-safe
Console.WriteLine(list.Count); // 0
Các phương thức xóa khác
| Phương thức | Mô tả |
|---|---|
Remove(object) |
Xóa lần xuất hiện đầu tiên |
RemoveAt(int index) |
Xóa tại chỉ mục |
RemoveRange(int index, int count) |
Xóa dải phần tử |
Clear() |
Xóa tất cả |