Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# 동적 바인딩(Dynamic Binding)의 개념과 활용법

C#에서 동적 바인딩(Dynamic Binding)이란 컴파일러가 컴파일 시점에 타입 검사를 수행하지 않고, 대신 프로그램이 실행되는 런타임(Runtime)에 타입 검사를 진행하는 방식을 의미합니다.

동적 바인딩이 필요한 이유

동적 바인딩은 익명 타입(Anonymous Type)이 하나의 메서드 안에서만 사용 가능하다는 제약을 우회할 때 특히 유용합니다. 익명 타입의 이름은 컴파일러에게만 노출되기 때문에, 일반적인 방식으로는 해당 타입을 메서드의 반환 값으로 선언할 수 없습니다. 하지만 반환 타입을 dynamic으로 지정하면 이 문제를 손쉽게 해결할 수 있습니다.

예제 코드

public dynamic GetAnonymousType() {
    return new {
        StudentName = "Tom",
        Subject = "Java",
    };
}

위 예제에서 메서드의 반환 타입이 dynamic으로 설정되어 있습니다. 이는 컴파일러가 컴파일 시점에 타입 검사를 수행하지 않겠다는 의미이며, 실제 타입 확인은 코드가 실행되는 런타임에 이루어집니다.

dynamic 키워드 사용 시 주의사항

dynamic으로 선언된 값은 컴파일 시점에는 구체적인 타입이 결정되지 않고, 실행 시점에 실제 타입이 바인딩됩니다. 이 덕분에 이름을 알 수 없는 익명 타입도 메서드 간에 자유롭게 전달할 수 있습니다.

다만 타입 검사가 런타임으로 미뤄지기 때문에, 존재하지 않는 멤버에 접근하거나 잘못된 연산을 수행하면 RuntimeBinderException과 같은 예외가 발생할 수 있습니다. 또한 동적 바인딩은 정적 바인딩보다 성능 오버헤드가 있으므로, 타입이 명확히 known한 경우에는 일반적인 정적 타이핑을 사용하는 것이 좋습니다.