포스트

C# GetType() typeof()

C# GetType() typeof()

@ TODO: 글 정리

💫 요약


  • 둘 다 Meta-Information을 포함한 System.Type을 가져옴
  • GetType(): 실행 시점 평가
  • typeof(): 컴파일 시점 평가, 정적으로
1
2
3
4
5
6
7
8
9
10
// Testing Types | 타입 식별
public class SomeDerivedClass : SomeClass { }
SomeDerivedClass someInstance = new SomeDerivedClass();

if (someInstance is SomeClass)                       // ==> true
// is는 상속된 클래스도 포함하여 검사하지만, 

if (someInstance.GetType() == typeof(SomeClass))     // ==> false
// GetType()은 정확한 타입을 반환
// mycontrol이 TextBox에게 derived 파생되어있을지도

💫 typeof()


() 안에 타입 이름을(문자열이 아니라 식별자 Identifier) 넣고, 타입을 가져오는 키워드 (컴파일 타임 시점 => 정적인 타입)

1
2
typeof(int); // => Int32
typeof(string); // => string

💫 GetType()


() 안에 인스턴스를 넣고, 타입을 가져오는 함수 (런타임 시점)

1
2
3
4
5
int temp = 0;
GetType(temp); // => Int32

TempClass temp = new();
GetType(temp); // => TempClass

💫 비교


1
2
3
4
5
string s = "Hi";
Type t1 = typeof(string);
Type t2 = s.GetType();

t1 == t2 // => true
1
2
3
4
5
object obj = "Hi";
Type t1 = typeof(object);  // ==> object
Type t2 = obj.GetType();   // ==> string

t1 == t2 // => false

💫 메모


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.