C#에서 배열의 마지막 요소 인덱스 찾기
C#에서 배열의 마지막 요소 인덱스를 확인하려면 GetUpperBound() 메서드를 사용하면 됩니다. 이 메서드는 지정한 차원의 상한(마지막) 인덱스를 반환하며, 반대로 첫 번째 요소의 인덱스는 GetLowerBound() 메서드로 확인할 수 있습니다.
다음 예제를 통해 실제 동작 방식을 살펴보겠습니다.
예제 1: 요소가 있는 배열
using System;
public class Demo {
public static void Main(){
string[] products = new string[] { "Andy", "Mark", "Gary", "Andre"};
Console.WriteLine("'A'로 시작하는 이름이 하나 이상 있는가? = {0}",
Array.Exists(products, ele => ele.StartsWith("A")));
Console.WriteLine("배열이 고정 크기인가? = " + products.IsFixedSize);
Console.WriteLine("배열이 읽기 전용인가? = " + products.IsReadOnly);
Console.WriteLine("배열이 동기화되어 있는가? = " + products.IsSynchronized);
Console.WriteLine("첫 번째 요소의 인덱스 = " + products.GetLowerBound(0));
Console.WriteLine("마지막 요소의 인덱스 = " + products.GetUpperBound(0));
}
}실행 결과
'A'로 시작하는 이름이 하나 이상 있는가? = True 배열이 고정 크기인가? = True 배열이 읽기 전용인가? = False 배열이 동기화되어 있는가? = False 첫 번째 요소의 인덱스 = 0 마지막 요소의 인덱스 = 3
위 예제에서 배열 products에는 4개의 문자열 요소가 저장되어 있습니다. C# 배열은 인덱스가 0부터 시작하므로 첫 번째 요소의 인덱스는 0이고, 마지막 요소의 인덱스는 전체 요소 개수보다 1 작은 3이 됩니다.
예제 2: 빈 배열의 경우
그렇다면 배열에 요소가 하나도 없을 때는 어떤 결과가 나올까요? 아래 예제를 통해 확인해 보겠습니다.
using System;
public class Demo {
public static void Main(){
string[] products = new string[] { };
Console.WriteLine("배열이 고정 크기인가? = " + products.IsFixedSize);
Console.WriteLine("배열이 읽기 전용인가? = " + products.IsReadOnly);
Console.WriteLine("배열이 동기화되어 있는가? = " + products.IsSynchronized);
Console.WriteLine("첫 번째 요소의 인덱스 = " + products.GetLowerBound(0));
Console.WriteLine("마지막 요소의 인덱스 = " + products.GetUpperBound(0));
}
}실행 결과
배열이 고정 크기인가? = True 배열이 읽기 전용인가? = False 배열이 동기화되어 있는가? = False 첫 번째 요소의 인덱스 = 0 마지막 요소의 인덱스 = -1
빈 배열의 경우 마지막 요소의 인덱스가 -1로 반환됩니다. 이는 유효한 요소가 존재하지 않는다는 의미입니다. 따라서 코드에서 마지막 인덱스를 사용하기 전에 반환값이 -1인지 먼저 확인하면 빈 배열 여부를 안전하게 판단할 수 있습니다.
핵심 정리
GetUpperBound(0): 배열의 마지막(최대) 인덱스를 반환합니다.GetLowerBound(0): 배열의 첫 번째(최소) 인덱스를 반환하며, 일반적인 배열에서는 항상 0입니다.- 배열이 비어 있으면
GetUpperBound(0)는 -1을 반환합니다. - 1차원 배열이라면
array.Length - 1을 통해서도 마지막 인덱스를 구할 수 있습니다.