Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 재기드(Jagged) 배열의 요소 형식은 무엇일까?

C# 재기드(Jagged) 배열의 요소 형식

재기드 배열(가변 배열)은 말 그대로 '배열의 배열' 구조를 가집니다. 따라서 재기드 배열의 각 요소는 참조 형식(reference type)이며, 별도로 초기화하지 않으면 null 값으로 설정됩니다.

또한 일반적인 2차원 사각형 배열과 달리 각 행(내부 배열)의 길이가 서로 달라도 되기 때문에, 비정형 데이터를 다룰 때 메모리를 더 유연하고 효율적으로 활용할 수 있습니다.

재기드 배열 선언하기

정수형 배열을 요소로 가지는 재기드 배열은 다음과 같이 선언합니다.

int [][] marks;

재기드 배열 초기화하기

배열을 선언한 후에는 각 요소에 실제 내부 배열을 할당해야 합니다. 아래 예제에서 marks는 5개의 정수 배열을 요소로 가지는 재기드 배열입니다.

int[][] marks = new int[][]{
    new int[]{ 40, 57 },
    new int[]{ 34, 55 },
    new int[]{ 23, 44 },
    new int[]{ 56, 78 },
    new int[]{ 66, 79 }
};

전체 예제 코드

다음은 C#에서 재기드 배열을 선언하고 초기화한 뒤, 중첩 반복문을 사용해 모든 요소를 출력하는 완전한 예제입니다.

using System;

namespace MyApplication {
   class MyDemoClass {
      static void Main(string[] args) {
         int i, j;
         int[][] marks = new int[][] {
            new int[] { 90, 95 },
            new int[] { 89, 94 },
            new int[] { 78, 87 },
            new int[] { 76, 68 },
            new int[] { 98, 91 }
         };

         for (i = 0; i < 5; i++) {
            for (j = 0; j < 2; j++) {
               Console.WriteLine("marks[{0}][{1}] = {2}", i, j, marks[i][j]);
            }
         }
         Console.ReadKey();
      }
   }
}

실행 결과

marks[0][0] = 90
marks[0][1] = 95
marks[1][0] = 89
marks[1][1] = 94
marks[2][0] = 78
marks[2][1] = 87
marks[3][0] = 76
marks[3][1] = 68
marks[4][0] = 98
marks[4][1] = 91

정리

재기드 배열의 요소는 참조 형식인 '배열 객체'이므로, 사용하기 전에 반드시 new 키워드로 각 내부 배열을 생성해야 합니다. 내부 배열을 할당하지 않은 상태에서 요소에 접근하면 null 참조 예외(NullReferenceException)가 발생할 수 있습니다. 각 행의 크기를 자유롭게 지정할 수 있다는 점이 재기드 배열의 가장 큰 장점이며, 학생별 과목 수가 다른 성적 처리처럼 길이가 제각각인 데이터를 다룰 때 특히 유용합니다.