Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เมธอด Queue.Clear() ใน C#

เมธอด 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 ต้องทำงาน