프로그래밍/실버라이트

[실버라이트] C# - 4.0 dynamic

쿠샨 2011. 1. 26. 11:43
dynamic 형식을 var 형식과 비교 해서 설명 하겠습니다.
C# 3.0 에서 var 형식이 새롭게 등장 했습니다. VB 개발자라면 var 형식을 이미 접해 봤을 것입니다.
var 와 dynamic 형식은 처음 접하는 개발자들은 이게 뭐지? 라는 생각이 들겁니다.

var 와 dynamic 은 초기 선언 시 타입 지정이 없다는 것입니다.
그럼 타입 지정은 언제 이루어 지나? 이것이 var 와 dynamic 의 차이 입니다.

var 은 컴파일 시점에서 타입 확정이 이루어 지고, dynamic 은 런타임(Runtime)시 타입이 확정 됩니다.


그렇다면 dynamic을 왜 사용할까?
지금 까지의 C#은 컴파일 될 때 타입이 모두 확정이 되어야 했다. 하지만 COM Interop, .Net Object reflection 작업 등을 할 때 컴파일 시점에 타입을 확정 할 수 없으며, 정말 많은 코드를 작성 해야 하는 어려움이 있었습니다. 이러한 점을 말끔 하게 해결 해주는 구세주? 가 바로 dynamic 입니다.

하지만 dynamic도 분명 사용상에 단점이 존재 합니다. dynamic은 런타임시에 타입이 확정 되므로 컴파일 시점에 타입이 확정 되는 것보다 성능에 영향을 미치게 됩니다. 따라서 무조건 적 dynamic 사용은 비효율적이며 컴파일 시점에 타입 확정이 어려운 제한된 영역에서만 사용 하는 것이 좋습니다.

dynamic 형식 사용이 필요한 예는 다음과 같습니다.
          COM object(COM IDispatch)
          Dynamic objects(IDynamicObject, IronPython, IronRuby, HTML DOM)
          Plain objects(.NET object reflection etc)


지금 까지 제가 훑어본 dynamic에 대한 간략 설명 이였습니다.
더 상세한 정보를 원하 시는 분들은 훈스 닷넷 으로 ㄱㄱ
참, 자료 출처도 www.hoons.kr  입니다.