C#에서 가변 배열(Jagged Array)은 배열의 각 요소가 또 다른 배열을 담는 구조로, 내부 배열들의 길이가 서로 달라도 되기 때문에 '들쭉날쭉한 배열'이라고도 불립니다. 이 글에서는 가변 배열의 전체 길이(Length), 상·하한 경계(Bound), 그리고 차원 수(Rank)를 확인하는 방법을 예제와 함께 살펴보겠습니다.
1. 가변 배열 선언 및 초기화
먼저 다음과 같이 int 타입의 가변 배열을 선언하고 초기화합니다.
int[][] arr = new int[][] {
new int[] { 0, 0 },
new int[] { 1, 2 },
new int[] { 2, 4 },
new int[] { 3, 6 },
new int[] { 4, 8 }
};
위 코드에서 arr은 총 5개의 내부 배열을 가지며, 각 내부 배열은 2개의 정수 요소를 포함합니다. 즉, 외부 배열의 길이는 5입니다.
2. Length, GetUpperBound(), GetLowerBound(), Rank 활용
배열의 길이는 Length 속성으로 확인할 수 있고, 첫 번째 차원의 최대 인덱스는 GetUpperBound(), 최소 인덱스는 GetLowerBound() 메서드로 얻을 수 있습니다. 아울러 Rank 속성을 사용하면 해당 배열의 차원 수를 알 수 있습니다.
예제 코드
using System;
public class Program {
public static void Main() {
int[][] arr = new int[][] {
new int[] { 0, 0 },
new int[] { 1, 2 },
new int[] { 2, 4 },
new int[] { 3, 6 },
new int[] { 4, 8 }
};
// 길이 및 차원 정보 출력
Console.WriteLine("Length:" + arr.Length);
Console.WriteLine("Upper Bound: {0}", arr.GetUpperBound(0).ToString());
Console.WriteLine("Lower Bound: {0}", arr.GetLowerBound(0).ToString());
Console.WriteLine("Dimensions of Array : " + arr.Rank);
}
}
실행 결과
Length:5 Upper Bound: 4 Lower Bound: 0 Dimensions of Array : 1
결과 해석
- Length: 5 — 외부 배열에 포함된 내부 배열의 개수가 5개라는 의미입니다.
- Upper Bound: 4 — 첫 번째 차원의 최대 인덱스가 4임을 나타냅니다. (길이가 5이므로 마지막 인덱스는 5 − 1 = 4)
- Lower Bound: 0 — C#의 배열은 기본적으로 인덱스가 0부터 시작하므로 하한 값은 항상 0입니다.
- Rank: 1 — 가변 배열은 '배열의 배열' 형태이므로, 외부 배열 자체는 1차원 배열입니다.
추가 참고 사항
GetUpperBound()와 GetLowerBound() 메서드는 조회할 차원을 매개변수로 받습니다. 예를 들어 arr.GetUpperBound(0)은 첫 번째 차원의 상한 인덱스를 반환합니다. 또한 가변 배열은 각 내부 배열의 길이가 서로 다를 수 있으므로, 특정 내부 배열의 길이가 필요할 때는 arr[i].Length처럼 해당 배열에 직접 접근해야 한다는 점을 기억하세요.