C# 에서는 개발자가 class 로 타입을 정의하면 내부적으로 해당 class 타입을 가지고 있는
System.Type [인스턴스]를 보유하게 되고, 바로 그 [인스턴스] 를 가져올 수 있는 방법이 GetType 이다.
잘 이해가 안된다면 코드부터 보자.
using System;
namespace Project1
{
class Computer
{
}
class Notebook : Computer
{
}
class Class1
{
public static void Main(String[] args)
{
Computer computer = new Computer();
Type type = computer.GetType();
Console.WriteLine(type.FullName);
Console.WriteLine(type.IsClass);
Console.WriteLine(type.IsArray);
}
}
}
출력 결과 :
Project1.Computer
True
False
Computer computer = new Computer(); 로 [인스턴스] 를 만든다.
그 후 Type [인스턴스] type 에 computer 의 타입을 대입하고 출력한다.
ToString 메서드가 하위 클래스에서 재정의 되면 타입의 전체 이름이 아닌 값 자체를 문자열로 반환한다.
GetType 메서드는 그러한 클래스에 대해 타입의 전체 이름 값을 반환할 수 있는 수단을 제공한다.
using System;
namespace Project1
{
class Class1
{
public static void Main(String[] args)
{
int n = 5;
string txt = "text";
Type intType = n.GetType();
Console.WriteLine(intType + "\n" + txt.GetType().FullName);
}
}
}
출력 결과 :
System.Int32
System.String
GetType은 "클래스의 인스턴스" 로부터 Type을 구하는 반면, "클래스의 이름"에서 곧바로 Type을 구할 수 있다.
이때는 typeof 라는 예약어를 사용한다.
using System;
namespace Project1
{
class Class1
{
public static void Main(String[] args)
{
Type type = typeof(double);
Console.WriteLine(type.FullName);
Console.WriteLine(typeof(System.Int16).FullName);
}
}
}
출력 결과 :
System.Double
System.Int16
GetType 메서드가 반환하는 Type 클래스의 사용법에 대해서는 이후에 [Reflection] 을 통해 다시 한번 다루겠다.
'C# > 책 정리' 카테고리의 다른 글
| C# 정리 ) GetHashCode (0) | 2021.11.29 |
|---|---|
| C# 정리 ) Equals (0) | 2021.11.28 |
| C# 정리 ) ToString (0) | 2021.11.28 |
| C# 정리 ) System.Object (0) | 2021.11.28 |
| C# 정리 ) as, is 연산자 (0) | 2021.11.28 |
댓글