C#에서 배열의 첫 번째 요소가 위치한 인덱스를 확인하려면 GetLowerBound(0) 메서드를 사용하면 됩니다. 이 메서드는 지정한 차원의 하한(lower bound) 인덱스를 반환하며, 일반적인 0 기반 배열에서는 첫 번째 요소의 인덱스인 0을 반환합니다.
예제 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));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
'A'로 시작하는 이름이 하나 이상 있습니까? = True 배열의 크기가 고정되어 있습니까? = True 배열이 읽기 전용입니까? = False 배열이 동기화되어 있습니까? = False 첫 번째 요소의 인덱스 = 0
예제 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));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
배열의 크기가 고정되어 있습니까? = True 배열이 읽기 전용입니까? = False 배열이 동기화되어 있습니까? = False 첫 번째 요소의 인덱스 = 0
핵심 정리
실행 결과에서 알 수 있듯이, 배열에 요소가 전혀 없더라도 GetLowerBound(0)는 여전히 0을 반환합니다. 이는 C#의 배열이 항상 0부터 인덱싱되기 때문입니다. 참고로 C# 배열은 기본적으로 크기가 고정(IsFixedSize = True)되어 있으며, 읽기 전용이나 스레드 동기화 속성은 기본값으로 False입니다.