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

C# 배열 클래스의 GetUpperBound() 메서드 사용 방법 완벽 정리

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)를 예방할 수 있습니다.