Giới thiệu
Phương thức Stack.Clear() trong C# được dùng để xóa tất cả các đối tượng khỏi Stack, đặt số lượng phần tử về 0.
Cú pháp
public virtual void Clear ();
Ví dụ 1: Stack chuỗi
using System;
using System.Collections;
public class Demo {
public static void Main() {
Stack stack = new Stack();
stack.Push("Inspiron");
stack.Push("Alienware");
stack.Push("Projectors");
stack.Push("Monitors");
stack.Push("XPS");
stack.Push("Laptop");
stack.Push("Notebook");
Console.WriteLine("Các phần tử Stack...");
foreach(string val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("Số lượng phần tử = " + stack.Count);
stack.Push("Ultrabook");
stack.Push("Cameras");
stack.Push("Keyboards");
Console.WriteLine("\nCác phần tử Stack...đã cập nhật");
foreach(string val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("\nSố lượng phần tử (đã cập nhật) = " + stack.Count);
stack.Clear();
Console.Write("Số lượng phần tử (sau Clear) = " + stack.Count);
}
}
Đầu ra ví dụ 1
Các phần tử Stack... Notebook Laptop XPS Monitors Projectors Alienware Inspiron Số lượng phần tử = 7 Các phần tử Stack...đã cập nhật Keyboards Cameras Ultrabook Notebook Laptop XPS Monitors Projectors Alienware Inspiron Số lượng phần tử (đã cập nhật) = 10 Số lượng phần tử (sau Clear) = 0
Ví dụ 2: Stack số nguyên
using System;
using System.Collections;
public class Demo {
public static void Main() {
Stack stack = new Stack();
stack.Push(150);
stack.Push(300);
stack.Push(500);
stack.Push(750);
stack.Push(1000);
stack.Push(1250);
stack.Push(1500);
stack.Push(2000);
stack.Push(2500);
Console.WriteLine("Các phần tử Stack...");
foreach(int val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("Số lượng phần tử = " + stack.Count);
stack.Push(3000);
stack.Push(3500);
stack.Push(4000);
Console.WriteLine("\nCác phần tử Stack...đã cập nhật");
foreach(int val in stack) {
Console.WriteLine(val);
}
Console.WriteLine("\nSố lượng phần tử (đã cập nhật) = " + stack.Count);
stack.Clear();
Console.Write("Số lượng phần tử (sau Clear) = " + stack.Count);
}
}
Đầu ra ví dụ 2
Các phần tử Stack... 2500 2000 1500 1250 1000 750 500 300 150 Số lượng phần tử = 9 Các phần tử Stack...đã cập nhật 4000 3500 3000 2500 2000 1500 1250 1000 750 500 300 150 Số lượng phần tử (đã cập nhật) = 12 Số lượng phần tử (sau Clear) = 0
Đặc điểm quan trọng
Clear()đặtCount = 0nhưng không giải phóng dung lượng nội bộ (capacity) của stack. Bộ nhớ vẫn được giữ để sử dụng lại.- Sau khi Clear, stack rỗng, gọi
Pop()hoặcPeek()sẽ némInvalidOperationException. - Phương thức này chạy trong thời gian O(1) vì chỉ cần đặt con trỏ đếm về 0.
- Khác với việc gán
stack = new Stack()(tạo đối tượng mới),Clear()giữ nguyên tham chiếu đối tượng.
Khi nào nên dùng Clear()?
- Khi muốn tái sử dụng đối tượng stack cho một tập dữ liệu mới.
- Khi cần giải phóng tham chiếu đến các đối tượng bên trong stack (giúp Garbage Collector).
- Trong các thuật toán duyệt đồ thị, backtracking cần reset stack giữa các lần lặp.