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; // 컴파일러 에러 생성

        // ...
    }
}

출처

Categories: ,

Updated: