ภาพรวม
ใน C# ไม่สามารถปรับขนาดอาร์เรย์ได้โดยตรง (fixed size) แต่ใช้ Array.Resize<T>() สร้างอาร์เรย์ใหม่ขนาดที่ต้องการ คัดลอกข้อมูลเดิม แล้วแทนที่อ้างอิงเดิม
รูปแบบการใช้งาน
char[] arr = new char[5] { 'J', 'A', '\0', '\0', '\0' };
Array.Resize(ref arr, 4); // ตัดเหลือ 4 ตัว
arr[2] = 'C'; arr[3] = 'K'; // ตั้งค่าใหม่
ตัวอย่างโค้ดเต็ม
using System;
class Program
{
static void Main()
{
char[] arr = new char[5];
arr[0] = 'J'; arr[1] = 'A';
Array.Resize(ref arr, 4); // เปลี่ยนขนาดเป็น 4
arr[2] = 'C'; arr[3] = 'K';
Console.WriteLine("Updated Array : " + new string(arr));
}
}
ผลลัพธ์
Updated Array : JACK
ข้อสังเกต
- ต้องใช้
refเพราะอาจเปลี่ยนอ้างอิงอาร์เรย์ (สร้างใหม่) - หากขนาดใหม่ มากกว่า เดิม: คัดลอกข้อมูลเดิม ต่อด้วยค่าเริ่มต้น (0/null/false)
- หากขนาดใหม่ น้อยกว่า เดิม: ตัดทิ้งส่วนท้าย
- Complexity: O(n) ต้องคัดลอกข้อมูล
- ทางเลือก: ใช้
List<T>หากต้องเปลี่ยนขนาดบ่อย