เมธอด Queue.Dequeue() ใน C# ใช้สำหรับลบและคืนค่า องค์ประกอบที่อยู่หน้าสุด (front) ของ Queue — ต่างจาก Peek() ที่ดูอย่างเดียวไม่ลบ
ไวยากรณ์ (Syntax)
public virtual object Dequeue ();
ตัวอย่างที่ 1: Dequeue แบบ Generic Queue<string>
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
Queue queue = new Queue();
queue.Enqueue("A");
queue.Enqueue("B");
queue.Enqueue("C");
queue.Enqueue("D");
queue.Enqueue("E");
queue.Enqueue("F");
queue.Enqueue("G");
Console.WriteLine("Count of elements = " + queue.Count);
Console.WriteLine("Element at the beginning of queue = " + queue.Peek());
queue.Dequeue(); // ลบ A
queue.Dequeue(); // ลบ B
queue.Dequeue(); // ลบ C
Console.WriteLine("Count of elements = " + queue.Count);
}
}
ผลลัพธ์
Count of elements = 7 Element at the beginning of queue = A Count of elements = 4
ตัวอย่างที่ 2: Dequeue หลายครั้ง พร้อม Clear
using System;
using System.Collections.Generic;
public class Demo
{
public static void Main()
{
Queue queue = new Queue();
queue.Enqueue("Gary");
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
queue.Enqueue("Mark");
queue.Enqueue("Jack");
queue.Enqueue("Ryan");
queue.Enqueue("Kevin");
Console.Write("Count of elements = ");
Console.WriteLine(queue.Count);
Console.WriteLine("Queue...");
foreach (string i in queue)
{
Console.WriteLine(i);
}
queue.Dequeue(); // ลบ Gary
queue.Dequeue(); // ลบ Jack
Console.WriteLine("\nQueue...UPDATED");
foreach (string i in queue)
{
Console.WriteLine(i);
}
Console.Write("Count of elements (updated) = " + queue.Count);
queue.Clear();
Console.Write("\nCount of elements (updated AGAIN) = ");
Console.WriteLine(queue.Count);
}
}
ผลลัพธ์
Count of elements = 8 Queue... Gary Jack Ryan Kevin Mark Jack Ryan Kevin Queue...UPDATED Ryan Kevin Mark Jack Ryan Kevin Count of elements (updated) = 6 Count of elements (updated AGAIN) = 0
ข้อสังเกตสำคัญ
Dequeue()ลบองค์ประกอบหน้าสุดออกและคืนค่ามัน — Queue เปลี่ยนแปลงไปถาวร- หาก Queue ว่าง (
Count == 0) การเรียก Dequeue() จะโยนInvalidOperationException - ควรตรวจสอบ
Count > 0ก่อน Dequeue() เสมอ - Queue เป็น FIFO (First In, First Out) — Enqueue ก่อน = Dequeue ก่อน
- เวอร์ชัน Generic
Queue<T>.Dequeue()คืนค่าแบบ T โดยตรง - ใช้
Clear()เพื่อล้างทั้งคิวทีเดียว