Tôi muốn làm trống một danh sách. Làm thế nào để làm điều đó?
.net empty list
, trang này xuất hiện trước MSDN!
Tôi muốn làm trống một danh sách. Làm thế nào để làm điều đó?
.net empty list
, trang này xuất hiện trước MSDN!
Câu trả lời:
Nó thực sự dễ dàng:
myList.Clear();
List<>
, ArrayList
hoặc dụng cụ IList
. ;)
List<T>.Clear
xóa đúng cách tất cả các tham chiếu cho phép GC xóa phân bổ khi cần thiết. new List<T>
KHÔNG làm điều này và không phù hợp một cách hiệu quả trong tất cả các tình huống
Nếu theo "danh sách" bạn có nghĩa là a List<T>
, thì phương thức Clear là những gì bạn muốn:
List<string> list = ...;
...
list.Clear();
Bạn nên có thói quen tìm kiếm tài liệu MSDN về những thứ này.
Dưới đây là cách nhanh chóng tìm kiếm tài liệu về các bit khác nhau của loại đó:
List<T>
chính lớp đó ( đây là nơi bạn nên bắt đầu )Tất cả các truy vấn này của Google liệt kê một nhóm các liên kết, nhưng thông thường bạn muốn liên kết đầu tiên mà google cung cấp cho bạn trong mỗi trường hợp.
Để đưa ra một câu trả lời thay thế (Ai cần 5 câu trả lời bằng nhau?):
list.Add(5);
// list contains at least one element now
list = new List<int>();
// list in "list" is empty now
Hãy nhớ rằng tất cả các tham chiếu khác đến danh sách cũ vẫn chưa bị xóa (tùy thuộc vào tình huống, đây có thể là những gì bạn muốn). Ngoài ra, về hiệu suất, nó thường chậm hơn một chút.
list
có một tham chiếu mới. Vì vậy, không sử dụng điều đó nếu bạn đang sử dụng một ổ khóa trong danh sách đó.
Tùy chọn # 1: Sử dụng hàm Clear () để làm trống List<T>
và giữ lại dung lượng của nó.
Đếm được đặt thành 0 và các tham chiếu đến các đối tượng khác từ các phần tử của bộ sưu tập cũng được phát hành.
Dung lượng vẫn không thay đổi.
Tùy chọn # 2 - Sử dụng các hàm Clear () và TrimExcess () để đặt List<T>
về trạng thái ban đầu.
Đếm được đặt thành 0 và các tham chiếu đến các đối tượng khác từ các phần tử của bộ sưu tập cũng được phát hành.
Việc cắt bỏ phần trống
List<T>
đặt dung lượng của Danh sách thành dung lượng mặc định.
Định nghĩa
Đếm = số phần tử thực sự có trongList<T>
Dung lượng = tổng số phần tử mà cấu trúc dữ liệu bên trong có thể chứa mà không cần thay đổi kích thước.
Clear () Chỉ
List<string> dinosaurs = new List<string>();
dinosaurs.Add("Compsognathus");
dinosaurs.Add("Amargasaurus");
dinosaurs.Add("Deinonychus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
Console.WriteLine("\nClear()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
Clear () và TrimExcess ()
List<string> dinosaurs = new List<string>();
dinosaurs.Add("Triceratops");
dinosaurs.Add("Stegosaurus");
Console.WriteLine("Count: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
dinosaurs.Clear();
dinosaurs.TrimExcess();
Console.WriteLine("\nClear() and TrimExcess()");
Console.WriteLine("\nCount: {0}", dinosaurs.Count);
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);
bạn có thể làm điều đó
var list = new List<string>();
list.Clear();