เมธอด 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()หากต้องการสร้างอาร์เรย์ใหม่โดยอัตโนมัติ (สะดวกกว่า)