C#에서 Type.GetElementType() 메서드는 현재 배열, 포인터 또는 참조(reference) 타입이 담고 있거나 가리키는 개체의 Type을 반환하는 데 사용됩니다. 예를 들어 문자열 배열에 이 메서드를 호출하면 해당 배열의 요소 타입인 System.String을 얻을 수 있습니다.
문법(Syntax)
GetElementType() 메서드의 기본 문법은 다음과 같습니다.
public abstract Type GetElementType ();
예제 1: 문자열 배열의 요소 타입 확인
다음은 Type.GetElementType() 메서드를 실제로 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main(){
string[] arr = {"tom", "amit", "kevin", "katie"};
Type t1 = arr.GetType();
Type t2 = t1.GetElementType();
Console.WriteLine("Type = "+t2.ToString());
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Type = System.String
위 예제에서 arr.GetType()으로 배열 자체의 타입(System.String[])을 먼저 가져온 뒤, GetElementType()를 호출하여 배열 요소의 개별 타입인 System.String을 반환받았습니다.
예제 2: 다차원 배열의 요소 타입 확인
이번에는 typeof 연산자와 함께 사용하여 다차원 배열의 요소 타입을 확인하는 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main(){
Type t1 = typeof(int[,,,]);
Type t2 = t1.GetElementType();
Console.WriteLine("Type = "+t2.ToString());
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Type = System.Int32
5차원 int 배열(int[,,,])에 대해 GetElementType()을 호출했음에도 불구하고, 반환되는 것은 배열의 차원과 무관하게 요소 타입인 System.Int32입니다.
정리
Type.GetElementType() 메서드는 리플렉션(Reflection) 작업 시 배열, 포인터, 참조 타입 내부의 실제 요소 타입을 동적으로 파악해야 할 때 유용하게 활용됩니다. 단, 이 메서드는 배열·포인터·참조 타입이 아닌 일반 타입에 호출하면 null을 반환한다는 점에 유의해야 합니다.