เมธอด Queue<T>.Clear() ใน C# ใช้ลบสมาชิกทั้งหมดออกจาก Queue — ทำให้ Queue ว่างเปล่า (Count = 0)
ไวยากรณ์ (Syntax)
public virtual void Clear();
ตัวอย่างที่ 1: ล้าง Queue ที่มี 10 สมาชิก
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
Queue<int> queue = new Queue<int>();
queue.Enqueue(100);
queue.Enqueue(200);
queue.Enqueue(300);
queue.Enqueue(400);
queue.Enqueue(500);
queue.Enqueue(600);
queue.Enqueue(700);
queue.Enqueue(800);
queue.Enqueue(900);
queue.Enqueue(1000);
Console.WriteLine("Queue...");
foreach (int i in queue)
{
Console.WriteLine(i);
}
Console.WriteLine("Count of elements in the Queue = " + queue.Count);
queue.Clear();
Console.WriteLine("Count of elements in the Queue [Updated] = " + queue.Count);
}
}
ผลลัพธ์
Queue... 100 200 300 400 500 600 700 800 900 1000 Count of elements in the Queue = 10 Count of elements in the Queue [Updated] = 0
ตัวอย่างที่ 2: เพิ่มสมาชิก แล้วล้างทีหลัง
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
Queue<int> queue = new Queue<int>();
queue.Enqueue(100);
queue.Enqueue(200);
queue.Enqueue(300);
Console.WriteLine("Queue...");
foreach (int i in queue)
{
Console.WriteLine(i);
}
Console.WriteLine("Count of elements in the Queue = " + queue.Count);
queue.Enqueue(800);
queue.Enqueue(900);
queue.Enqueue(1000);
Console.WriteLine("Count of elements in the Queue [Updated] = " + queue.Count);
queue.Clear();
Console.WriteLine("Count of elements in the Queue [Updated] = " + queue.Count);
}
}
ผลลัพธ์
Queue... 100 200 300 Count of elements in the Queue = 3 Count of elements in the Queue [Updated] = 6 Count of elements in the Queue [Updated] = 0
สรุป
Clear()ลบสมาชิกทั้งหมด —Countกลายเป็น 0, ความจุ (capacity) อาจคงอยู่ (implementation detail)- Queue เป็นโครงสร้าง FIFO (First In, First Out)
- เมธอดหลัก:
Enqueue()(เพิ่มท้าย),Dequeue()(นำออกหน้า),Peek()(ดูหน้า),Contains(),Clear() - หลัง Clear() สามารถ Enqueue ใหม่ได้ทันที — Queue พร้อมใช้งาน
- Non-generic
Queue(System.Collections) ล้าสแล้ว — ใช้Queue<T>(System.Collections.Generic) - Complexity: O(n) — ต้องเดินปล่อย reference ทุกสมาชิก (สำหรับ reference types)
ตัวอย่างเพิ่มเติม: Clear vs การสร้างใหม่
var q = new Queue<int>(); q.Enqueue(1); q.Enqueue(2); q.Enqueue(3); q.Clear(); // ใช้คิวเดิมต่อได้ - capacity อาจคงอยู่ // q = new Queue<int>(); // หรือสร้างใหม่ - กิน memory ใหม่, GC ต้องทำงาน