C#의 동적(dynamic) 데이터 형식이란?
C#에서 동적(dynamic) 형식은 하나의 변수에 어떤 종류의 값이든 저장할 수 있는 특별한 데이터 형식입니다. 가장 큰 특징은 이러한 변수에 대한 타입 검사(type checking)가 컴파일 시점이 아닌 런타임(실행 시점)에 수행된다는 점입니다.
즉, 컴파일러는 dynamic 변수가 실제로 어떤 타입의 값을 담고 있는지 확인하지 않으며, 프로그램이 실행되는 순간에 비로소 해당 값의 실제 타입이 결정되고 검증됩니다.
동적 형식 선언 문법
동적 형식 변수는 다음과 같은 문법으로 선언합니다.
dynamic <변수명> = 값;
동적 형식 사용 예제
아래 예제처럼 dynamic 키워드를 사용하면 정수뿐만 아니라 다양한 타입의 값을 자유롭게 할당할 수 있습니다.
dynamic val1 = 100; dynamic val2 = 5; dynamic val3 = 20;
심지어 하나의 dynamic 변수에 서로 다른 타입의 값을 재할당하는 것도 가능합니다.
dynamic value = 10; // 정수형 value = "Hello"; // 문자열 value = 3.14; // 실수형
동적 형식과 object 형식의 차이점
dynamic 형식은 object 형식과 매우 유사하지만, 결정적인 차이가 하나 있습니다.
- object 형식: 타입 검사가 컴파일 시점(compile time)에 이루어집니다.
- dynamic 형식: 타입 검사가 런타임(run time)에 이루어집니다.
따라서 object 형식은 컴파일 단계에서 타입 오류를 미리 잡아낼 수 있어 안전하지만, dynamic 형식은 잘못된 연산이나 메서드 호출이 있더라도 프로그램 실행 중에 오류(RuntimeBinderException)가 발생할 때까지 알 수 없습니다.
정리
dynamic 형식은 COM 객체, JSON 데이터 처리, 리플렉션 등 타입을 사전에 알기 어려운 상황에서 유용하게 활용됩니다. 다만 런타임 오류의 위험이 있으므로, 타입이 명확한 경우에는 일반적인 정적 타입(static typing)을 사용하는 것이 더 안전하고 권장되는 방법입니다.