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

C# 가변 배열(Jagged Array)의 길이와 차수(Rank) 구하는 방법

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처럼 해당 배열에 직접 접근해야 한다는 점을 기억하세요.