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

แทนที่อาร์เรย์ C# ด้วยอาร์เรย์ใหม่ขนาดต่างกัน (Array.Resize)


ภาพรวม

ใน 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> หากต้องเปลี่ยนขนาดบ่อย