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

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


เมธอด Queue.CopyTo() ใน C# ใช้สำหรับคัดลอกองค์ประกอบทั้งหมดใน Queue ไปยังอาร์เรย์ 1 มิติที่มีอยู่แล้ว เริ่มจากดัชนีที่ระบุ

ไวยากรณ์ (Syntax)

public virtual void CopyTo (Array arr, int index);
  • arr — อาร์เรย์ 1 มิติที่เป็นปลายทาง (ต้องมีขนาดพอ)
  • index — ดัชนีเริ่มต้นในอาร์เรย์ปลายทาง (0-based)

ตัวอย่างที่ 1: CopyTo กับ int array

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Queue queue = new Queue();
        queue.Enqueue(100);
        queue.Enqueue(200);
        queue.Enqueue(300);

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

        Console.WriteLine("Queue...");
        foreach (int i in queue)
        {
            Console.WriteLine(i);
        }

        Console.WriteLine("Does the queue have element 500? = " + queue.Contains(500));

        int[] intArr = new int[5];
        intArr[0] = 1;
        intArr[1] = 2;
        intArr[2] = 3;
        intArr[3] = 4;
        // คัดลอก queue ไปยัง intArr เริ่มจาก index 1
        queue.CopyTo(intArr, 1);

        Console.WriteLine("\nQueue (Updated)");
        foreach (int i in queue)
        {
            Console.WriteLine(i);
        }

        Console.WriteLine("\nArray (Updated)");
        foreach (int i in intArr)
        {
            Console.WriteLine(i);
        }
    }
}

ผลลัพธ์

Count of elements = 3
Queue...
100
200
300
Does the queue have element 500? = False

Queue (Updated)
100
200
300

Array (Updated)
1
100
200
300
0

ตัวอย่างที่ 2: CopyTo กับ string array

using System;
using System.Collections.Generic;

public class Demo
{
    public static void Main()
    {
        Queue queue = new Queue();
        queue.Enqueue("Tim");
        queue.Enqueue("Jack");
        queue.Enqueue("Nathan");
        queue.Enqueue("Tom");
        queue.Enqueue("David");
        queue.Enqueue("Mark");

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

        Console.WriteLine("Queue...");
        foreach (string i in queue)
        {
            Console.WriteLine(i);
        }

        string[] strArr = new string[10];
        strArr[0] = "AB";
        strArr[1] = "BC";
        strArr[2] = "DE";
        strArr[3] = "EF";
        // คัดลอก queue ไปยัง strArr เริ่มจาก index 1
        queue.CopyTo(strArr, 1);

        Console.WriteLine("\nQueue (Updated)");
        foreach (string i in queue)
        {
            Console.WriteLine(i);
        }

        Console.WriteLine("\nArray (Updated)");
        foreach (string i in strArr)
        {
            Console.WriteLine(i);
        }
    }
}

ผลลัพธ์

Count of elements = 6
Queue...
Tim
Jack
Nathan
Tom
David
Mark

Queue (Updated)
Tim
Jack
Nathan
Tom
David
Mark

Array (Updated)
AB
Tim
Jack
Nathan
Tom
David
Mark
(empty)
(empty)
(empty)

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

  • CopyTo คัดลอก ทุกองค์ประกอบ ใน Queue — ไม่สามารถคัดลอกบางส่วนได้
  • อาร์เรย์ปลายทางต้องมีขนาดพอ: arr.Length - index >= queue.Count มิฉะนั้นจะโยน ArgumentException
  • Queue ไม่เปลี่ยนแปลง หลัง CopyTo (ไม่ใช่ Move)
  • ลำดับในอาร์เรย์จะตรงกับลำดับ Dequeue (FIFO order)
  • ใช้ ToArray() หากต้องการสร้างอาร์เรย์ใหม่โดยอัตโนมัติ (สะดวกกว่า)