재미로 읽는 C# 스토리

[제목] C#의 Dynamic Typing 기능

C#의 Dynamic Typing 기능

C#은 Statically Typed Language이다. 즉, 클래스 구조체 등등의 C# Type들이 컴파일시 미리 고정되어 있어서 컴파일러가 각 타입의 Method, Property 등을 모두 알고 있게 되고, 따라서 잘못된 메서드나 속성을 호출하게 되면 컴파일러 에러를 곧바로 낼 수 있게 된다. 이러한 Static Typing은 C# 1.0 부터 C#의 근간이 되는 기능이라 볼 수 있는데 이 기능으로 많은 프로그래밍 오류가 미리 미리 발견되었다고 해도 과언이 아니다.

C#은 버젼 업그레이드를 통해 새로운 기능을 계속 추가하였는데, C# 4.0 에 dynamic 이라는 하나의 키워드를 추가하였다. 외견상 하나의 C# 키워드에 불과하지만, 이 키워드가 도입됨으로써 C#에 Dynamic Typing의 장이 열리게 되었다. Dynamic Typing이란 컴파일시 미리 해당 타입을 알 지 못하고, 런타임시에 해당 객체의 타입을 알게되는 것이다.

dynamic app = GetFromExternal(); app.Run(1);

예를 들어 위의 app은 컴파일시에 어떤 클래스인지 어떤 구조체인지 알 수 없으며, 실제 런타임시에만 해당 타입이 구체적으로 알려져서 그 타입의 Run() 메서드를 호출하게 되는 것이다. 따라서 컴파일러는 dynamic 을 만나면 무슨 타입인지 검사하지 않고 런타임시에 컴파일시에 했어어야 하는 작업들(타입체킹, 메서드 오버로딩 등)을 실행하게 된다.

C#의 Dynamic Typing 지원은 .NET Object 뿐만 아니라 기존의 COM Object 활용에 매우 편리한 기능을 제공하며, 나아가 Dynamic Typing을 기본으로 하는 타 Dynamic Language들을 불러 쓸 수 있는 기능을 지원한다. 즉, Ruby나 Python 같은 Dynamic Language 코드들을 C#에서 호출하여 사용할 수 있는 것이다.

하지만 C#이 이러한 Dynamic Typing 기능을 지원한다 해도, 기본적으로 C#은 Static Typing에 기반한 언어이며, Static Typing이 주는 잇점이 훨씬 많다는 점을 기억하자~



본 웹사이트는 광고를 포함하고 있습니다. 광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.