dynamic 키워드
동적 형식 dynamic
- 변수 및 해당 멤버에 대한 참조 사용에 대한 컴파일 타임 검사를 패싱
- 런타임에서 확인
- 대부분의 상황에서 object 처럼 동작
- 그러나 컴파일러가 형식을 검사하지 않은 상태
- 컴파일 타임을 거치며 object 타입으로 변환
- 런타임에서 dynamic 형식은 존재하지 않음
- null이 아닌 모든 식은 dynamic으로 변환 가능
class Program
{
static void Main(string[] args)
{
dynamic dyn = 1;
object obj = 1;
// results:
// System.Int32
// System.Int32
System.Console.WriteLine(dyn.GetType());
System.Console.WriteLine(obj.GetType());
}
}
class Program
{
static void Main(string[] args)
{
dynamic dyn = 1;
object obj = 1;
// 구문 추가
dyn = dyn + 3; // 컴파일러 에러 없음, 런타임 에러 발생
obj = obj + 3; // 컴파일러 에러 생성
// ...
}
}