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

เมธอด Queue.Peek() ใน C# พร้อมตัวอย่าง


เมธอด Queue.Peek() ใน C# ใช้สำหรับดูค่าที่อยู่หน้าสุด (front) ของคิว โดยไม่ลบออก จากคิว — ต่างจาก Dequeue() ที่จะลบค่าออกไปพร้อมกัน

ไวยากรณ์ (Syntax)

public virtual object Peek ();

ตัวอย่างที่ 1: Queue แบบ Non-Generic

using System;
using System.Collections;

public class Demo
{
    public static void Main()
    {
        Queue queue = new Queue();
        queue.Enqueue("AB");
        queue.Enqueue("BC");
        queue.Enqueue("CD");
        queue.Enqueue("DE");
        queue.Enqueue("EF");
        queue.Enqueue("FG");
        queue.Enqueue("GH");
        queue.Enqueue("HI");

        Console.WriteLine("Queue...");
        IEnumerator demoEnum = queue.GetEnumerator();
        while (demoEnum.MoveNext())
        {
            Console.WriteLine(demoEnum.Current);
        }

        Console.WriteLine("Queue element at the beginning = " + queue.Peek());
        Console.WriteLine("Is Queue synchronized? = " + queue.IsSynchronized);

        Queue queue2 = Queue.Synchronized(queue);
        Console.WriteLine("Is Queue synchronized now? = " + queue2.IsSynchronized);
    }
}

ผลลัพธ์

Queue...
AB
BC
CD
DE
EF
FG
GH
HI
Queue element at the beginning = AB
Is Queue synchronized? = False
Is Queue synchronized now? = True

ตัวอย่างที่ 2: Queue แบบ Generic (Queue<string>)

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 element at the beginning = " + queue.Peek());
        Console.WriteLine("Does the queue have element Jack? = " + queue.Contains("Jack"));

        queue.Clear();
        Console.Write("Count of elements (updated) = ");
        Console.WriteLine(queue.Count);
    }
}

ผลลัพธ์

Count of elements = 8
Queue element at the beginning = Gary
Does the queue have element Jack? = True
Count of elements (updated) = 0

ข้อสังเกตสำคัญ

  • Peek() คืนค่าออบเจ็กต์ที่หน้าสุด โดยไม่ลบออก — คิวยังคงสมบูรณ์
  • หากคิวว่าง (Count == 0) การเรียก Peek() จะโยน InvalidOperationException
  • ควรตรวจสอบ Count > 0 ก่อนเรียก Peek() เสมอ
  • Queue เป็นโครงสร้างข้อมูลแบบ FIFO (First In, First Out) — ค่าที่เพิ่มก่อนจะอยู่หน้าสุด
  • เวอร์ชัน Generic Queue<T>.Peek() คืนค่าแบบ T โดยตรง ไม่ต้องแคสต์