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

Jagged Array ใน C# คืออะไร

Jagged Array (Array of Arrays) คือ อาร์เรย์ที่แต่ละ Element เป็นอีก Array หนึ่ง แถวแต่ละแถวสามารถมีขนาดต่างกันได้

Syntax

// ประกาศ
int[][] jaggedArray;

// ประกาศและกำหนดค่า
int[][] points = new int[][]
{
    new int[] {10, 5},
    new int[] {30, 40},
    new int[] {70, 80},
    new int[] {60, 70}
};

การเข้าถึง

// points[row][column]
int value = points[2][1]; // 80

โค้ดตัวอย่างเต็ม

using System;

namespace Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            int[][] pages = new int[][]
            {
                new int[] {400, 345},
                new int[] {320, 444},
                new int[] {900, 430},
                new int[] {890, 340}
            };
            
            for (int i = 0; i < pages.Length; i++)
            {
                for (int j = 0; j < pages[i].Length; j++) // ใช้ pages[i].Length
                {
                    Console.WriteLine("a[{0}][{1}] = {2}", i, j, pages[i][j]);
                }
            }
            
            Console.ReadKey();
        }
    }
}

ผลลัพธ์

a[0][0] = 400  a[0][1] = 345
a[1][0] = 320  a[1][1] = 444
a[2][0] = 900  a[2][1] = 430
a[3][0] = 890  a[3][1] = 340

Jagged Array vs 2D Array

คุณสมบัติJagged Array (int[][])2D Array (int[,])
Syntaxarr[i][j]arr[i,j]
ขนาดแถวต่างกันได้คงที่ (Rectangular)
MemoryNon-contiguous (Array of References)Contiguous Block
Rank Property12
Performanceช้ากว่าเล็กน้อยเร็วกว่า (Cache Friendly)
Initializeยืดหยุ่นกว่าต้องรู้ขนาดล่วงหน้า

เมื่อไหร่ควรใช้ Jagged Array

  • ข้อมูลแถวไม่เท่ากัน (Ragged Data) เช่น จำนวนนักเรียนต่อห้องเรียน
  • ต้องการเพิ่ม/ลบแถวได้ (Reassign inner array)
  • ประหยัด Memory เมื่อแถวมีขนาต่างมาก