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

C# CharEnumerator.GetType() 메서드 완벽 가이드: 현재 인스턴스의 타입 확인하기

C#의 CharEnumerator.GetType() 메서드는 현재 인스턴스의 정확한 런타임 타입(Type)을 반환하는 데 사용됩니다. 이 메서드는 모든 .NET 객체가 상속받는 Object 클래스에서 파생된 것으로, 문자열을 문자 단위로 순회할 때 사용되는 CharEnumerator 객체의 실제 타입 정보를 확인할 수 있습니다.

문법(Syntax)

public Type GetType();

이 메서드는 매개변수를 받지 않으며, 현재 인스턴스의 런타임 타입을 나타내는 Type 객체를 반환합니다.

예제 코드

다음 예제를 통해 CharEnumerator.GetType() 메서드의 실제 동작 방식을 살펴보겠습니다.

using System;
public class Demo {
    public static void Main(){
        string strNum = "john";
        CharEnumerator ch = strNum.GetEnumerator();
        Console.WriteLine("HashCode = "+ch.GetHashCode());
        Console.WriteLine("Get the Type = "+ch.GetType());
        while (ch.MoveNext())
            Console.Write(ch.Current + " ");
        // 객체 해제(Dispose)
        ch.Dispose();
        // 위에서 객체를 해제했기 때문에 아래 코드는 오류를 발생시킵니다.
        // Console.WriteLine(ch.Current);
    }
}

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

HashCode = 1373506
Get the Type = System.CharEnumerator
j o h n

코드 설명

위 예제의 핵심 흐름은 다음과 같습니다.

1. 열거자 생성: strNum.GetEnumerator()를 호출하여 문자열 "john"에 대한 CharEnumerator 객체를 생성합니다.

2. 해시 코드 확인: GetHashCode() 메서드를 통해 해당 인스턴스의 해시 코드를 출력합니다.

3. 타입 확인: GetType() 메서드가 반환한 값이 System.CharEnumerator임을 확인할 수 있습니다. 이것이 바로 현재 인스턴스의 실제 런타임 타입입니다.

4. 문자 순회: MoveNext()Current 속성을 조합하여 문자열의 각 문자를 하나씩 출력합니다.

5. 리소스 해제: Dispose()를 호출하여 객체를 명시적으로 해제합니다. 해제된 이후에는 Current 속성에 접근할 수 없으므로, 주석 처리된 코드처럼 접근 시 오류가 발생합니다.

주요 특징 정리

- GetType()은 매개변수 없이 호출되며, 런타임 타입 정보를 담은 Type 객체를 반환합니다.
- 반환값을 통해 다형성(polymorphism) 상황에서도 객체의 실제 타입을 정확히 파악할 수 있습니다.
- CharEnumerator는 IDisposable을 구현하므로, 사용 후 Dispose()로 리소스를 해제하는 것이 좋습니다.
- Dispose() 호출 후에는 Current, MoveNext() 등 멤버에 접근하면 InvalidOperationException이 발생합니다.