-dynamic 형식-
17.1 dynamic 형식 소개
dynamic 형식도 int, string처럼 또 하나의 데이터 형식이다.
형식 검사가 컴파일할 때 이루어지는 다른 형식과는 달리
실행할 때 이루어진다는 점이 dynamic 형식의 특징이다.
class MyClass
{
public void FuncAAA()
{ 어쩌구 저쩌구 }
}
class MainApp
{
static void Main(string[] args)
{
MyClass obj = new MyClass();
obj.FuncAAA();
obj.FuncBBB(); // 이부분이 에러가 남
}
}
위의 코드는 컴파일 자체가 되질 않는다.
없는 메소드를 선언 했으니 당연히 에러가 난다. 하지만 dynamic 형식을 쓰면...
class MainApp
{
static void Main(string[] args)
{
dynamic obj = new MyClass();
obj.FuncAAA();
obj.FuncBBB(); //dynamic 형식으로 선언된 obj는 일단 컴파일 형식 검사는 피함
}
}
형식 검사를 컴파일 할 때에서 실행할 때로 미루겠다는 것이지, 하지 않는 것은 아니다.
17.2 COM 과 .NET 사이의 상호 운용성을 위한 dynamin 형식
COM 이란?
마이크로소프트의 소프트웨어 컴포넌트 규격을 말한다.
하지만 닷넷이 나오면서 COM과 C#이 서로 문제가 생겼다.
(1) COM은 메소드가 결과를 반환할 때 실제 형식이 아닌 object 형식으로 반환한다.
(2) COM은 오버로딩을 지원하지 않는다. 대신 메소드와 선택적 매개 변수와 기본값 매개 변수를 지원한다.
이 두가지를 C# 4.0에서 dynamic 형식의 도입을 통해 (1)을 해결하고,
메소드의 선택적 매개 변수와 기본 값 매개 변수 도입을 통해 (2)문제를 해결했다.
댓글 없음:
댓글 쓰기