C#에서 배열(Array) 클래스가 제공하는 GetUpperBound() 메서드는 지정한 차원의 상한 인덱스(upper bound)를 반환합니다. 이 메서드는 배열의 크기를 동적으로 확인하거나, 다차원 배열을 안전하게 순회할 때 특히 유용하게 활용됩니다.
GetUpperBound() 메서드 기본 사용법
먼저 배열을 생성한 뒤, 아래와 같이 GetUpperBound()를 호출하여 해당 차원의 상한값을 손쉽게 가져올 수 있습니다.
arr.GetUpperBound(0).ToString()
여기서 매개변수 0은 첫 번째 차원을 의미합니다. 즉, 1차원 배열에서는 항상 0을 전달하면 되고, 2차원 이상의 배열에서는 각 차원에 해당하는 인덱스를 전달하면 됩니다.
예제 코드
다음은 C#에서 GetUpperBound() 메서드를 실제로 사용하는 방법을 보여주는 예제입니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Demo {
class Program {
static void Main(string[] args) {
Array arr = Array.CreateInstance(typeof(String), 6);
arr.SetValue("One", 0);
arr.SetValue("Two", 1);
arr.SetValue("Three", 3);
arr.SetValue("Four", 4);
arr.SetValue("Five", 5);
Console.WriteLine("Upper Bound: {0}",arr.GetUpperBound(0).ToString());
Console.ReadLine();
}
}
}실행 결과
Upper Bound: 5
핵심 포인트
위 예제에서 배열은 크기 6으로 생성되었으며, C#의 배열은 0부터 인덱싱이 시작되므로 마지막 유효 인덱스는 5(= 배열 길이 6 − 1)입니다. 따라서 GetUpperBound(0)은 5를 반환합니다.
추가로 참고할 만한 사항은 다음과 같습니다.
- 0 기반 배열: 일반적인 C# 배열은 하한(lower bound)이 항상 0이므로, 상한값은 곧 '배열 길이 − 1'과 같습니다.
- 다차원 배열: 2차원 배열이라면 GetUpperBound(0)은 행(row)의 최대 인덱스를, GetUpperBound(1)은 열(column)의 최대 인덱스를 반환합니다.
- 비제네릭 Array 활용: 예제처럼 Array.CreateInstance()로 생성한 배열에서도 동일하게 동작하며, 반복문의 경계 조건으로 활용하면 범위 초과 오류(IndexOutOfRangeException)를 예방할 수 있습니다.