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)가 발생할 수 있습니다. 각 행의 크기를 자유롭게 지정할 수 있다는 점이 재기드 배열의 가장 큰 장점이며, 학생별 과목 수가 다른 성적 처리처럼 길이가 제각각인 데이터를 다룰 때 특히 유용합니다.