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

C# Type.GetElementType() 메서드 완벽 가이드: 배열과 참조 타입의 요소 타입 확인하기

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을 반환한다는 점에 유의해야 합니다.