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

    // ...
  }
}

출처

카테고리: ,

업데이트: