C# 동적 바인딩의 개념
동적 바인딩(Dynamic Binding)은 컴파일 시점이 아닌 런타임(실행 시점)에 타입 검사가 수행되는 방식을 말합니다. 즉, 컴파일러는 코드를 컴파일하는 단계에서 변수나 표현식의 타입을 확인하지 않고, 프로그램이 실제로 실행될 때 해당 타입을 검사합니다.
C#에서는 dynamic 키워드를 사용해 이러한 동적 바인딩을 구현할 수 있습니다.
동적 바인딩이 필요한 이유
동적 바인딩은 익명 타입(Anonymous Type)의 제약을 우회할 때 특히 유용합니다. 일반적으로 익명 타입은 하나의 메서드 내부에서만 사용할 수 있는데, 그 이유는 익명 타입의 이름이 오직 컴파일러에게만 보이기 때문입니다. 따라서 개발자는 익명 타입을 메서드의 반환 값으로 직접 선언할 수 없습니다.
하지만 메서드의 반환 타입을 dynamic으로 지정하면, 컴파일러가 컴파일 시점에 타입 검사를 수행하지 않기 때문에 익명 타입 객체를 반환 값으로 사용할 수 있습니다.
예제 코드
다음 예제를 살펴보겠습니다.
public dynamic GetAnonymousType() {
return new {
StudentName = "Jack",
Subject = "Maths",
};
}위 코드에서 메서드의 반환 타입이 dynamic으로 설정되어 있습니다. 이는 곧 컴파일러가 컴파일 시점에 타입 검사를 수행하지 않는다는 의미입니다.
public dynamic GetAnonymousType() {}정리
- 동적 바인딩에서는 컴파일 시점에 타입 검사가 이루어지지 않습니다.
- 타입 검사는 런타임에 수행됩니다.
- 익명 타입처럼 이름이 컴파일러에게만 노출되는 타입도
dynamic을 활용하면 메서드의 반환 값으로 사용할 수 있습니다.