가변 배열(C# 프로그래밍 가이드)

업데이트: 2007년 11월

가변 배열의 요소에는 배열이 사용됩니다. 따라서 가변 배열의 요소는 다양한 차원과 크기를 가질 수 있습니다. 가변 배열을 "배열의 배열"이라고도 합니다. 다음 예제에서는 가변 배열을 선언 및 초기화하고 가변 배열에 액세스하는 방법을 보여 줍니다.

다음은 3개의 요소를 가진 1차원 배열의 선언입니다. 이 배열의 각 요소는 1차원 정수 배열입니다.

int[][] jaggedArray = new int[3][];

jaggedArray를 사용하려면 먼저 요소를 초기화해야 합니다. 다음과 같이 요소를 초기화할 수 있습니다.

jaggedArray[0] = new int[5];
jaggedArray[1] = new int[4];
jaggedArray[2] = new int[2];

각 요소는 1차원 정수 배열입니다. 첫째 요소는 5개의 정수, 둘째 요소는 4개의 정수, 셋째 요소는 2개의 정수를 갖는 배열입니다.

초기 값을 사용하여 배열 요소를 값으로 채울 수도 있습니다. 이 경우 배열 크기를 지정할 필요가 없습니다. 예를 들면 다음과 같습니다.

jaggedArray[0] = new int[] { 1, 3, 5, 7, 9 };
jaggedArray[1] = new int[] { 0, 2, 4, 6 };
jaggedArray[2] = new int[] { 11, 22 };

또한 다음 예제처럼 선언 시에 배열을 초기화할 수 있습니다.

    int[][] jaggedArray2 = new int[][] 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};

다음과 같은 약식 표기를 사용할 수 있습니다. 요소에 대한 기본 초기화가 없으므로 요소 초기화에서 new 연산자를 생략할 수 없다는 사실에 주의해야 합니다.

    int[][] jaggedArray3 = 
{
    new int[] {1,3,5,7,9},
    new int[] {0,2,4,6},
    new int[] {11,22}
};

가변 배열은 배열의 배열이므로 그 요소는 참조 형식이며 null로 초기화됩니다.

다음 예제처럼 개별 배열 요소에 액세스할 수 있습니다.

// Assign 77 to the second element ([1]) of the first array ([0]):
jaggedArray3[0][1] = 77;

// Assign 88 to the second element ([1]) of the third array ([2]):
jaggedArray3[2][1] = 88;

가변 배열과 다차원 배열을 함께 사용할 수 있습니다. 다음은 서로 다른 크기의 2차원 배열 요소를 갖는 1차원 가변 배열의 선언 및 초기화입니다.

int[][,] jaggedArray4 = new int[3][,] 
{
    new int[,] { {1,3}, {5,7} },
    new int[,] { {0,2}, {4,6}, {8,10} },
    new int[,] { {11,22}, {99,88}, {0,9} } 
};

첫째 배열의 [1,0] 요소 값(값 5)을 표시하는 다음 예제처럼 개별 요소에 액세스할 수 있습니다.

System.Console.Write("{0}", jaggedArray4[0][1, 0]);

Length 메서드는 가변 배열에 포함된 배열의 수를 반환합니다. 예를 들어, 앞의 예제에서와 같은 배열을 선언한 경우를 가정해 볼 수 있습니다.

System.Console.WriteLine(jaggedArray4.Length);

값 3을 반환합니다.

예제

이 예제에서는 배열을 요소로 사용하는 배열을 만듭니다. 배열 요소 각각은 다른 크기입니다.

class ArrayTest
{
    static void Main()
    {
        // Declare the array of two elements:
        int[][] arr = new int[2][];

        // Initialize the elements:
        arr[0] = new int[5] { 1, 3, 5, 7, 9 };
        arr[1] = new int[4] { 2, 4, 6, 8 };

        // Display the array elements:
        for (int i = 0; i < arr.Length; i++)
        {
            System.Console.Write("Element({0}): ", i);

            for (int j = 0; j < arr[i].Length; j++)
            {
                System.Console.Write("{0}{1}", arr[i][j], j == (arr[i].Length - 1) ? "" : " ");
            }
            System.Console.WriteLine();            
        }
        // Keep the console window open in debug mode.
        System.Console.WriteLine("Press any key to exit.");
        System.Console.ReadKey();
    }
}
/* Output:
    Element(0): 1 3 5 7 9
    Element(1): 2 4 6 8
*/

참고 항목

개념

C# 프로그래밍 가이드

참조

배열(C# 프로그래밍 가이드)

1차원 배열(C# 프로그래밍 가이드)

다차원 배열(C# 프로그래밍 가이드)

Array