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

C#에서 var와 dynamic의 차이점 완벽 정리

C#에서 var와 dynamic의 차이점

모든 프로그래밍 언어에서 코딩은 변수 선언으로 시작되며, 이후 변수 정의와 로직 구현이 이루어집니다. 따라서 어떤 프로그래밍 언어로 개발을 시작하기 전에 변수를 올바르게 선언하는 방법을 이해하는 것은 가장 중요한 기초 중 하나입니다.

C#의 경우를 살펴보면, 언어가 발전하면서 변수 선언 방식에도 변화가 있었습니다. 초기 버전의 C#에서는 모든 코드가 컴파일 시점에 검증되었기 때문에 정적 타입(Static Typed) 언어로 분류되었으며, 이때는 var 키워드를 사용해 변수를 선언했습니다. 그러다 C# 4.0부터 dynamic 키워드가 도입되면서 문법 검증과 오류 확인이 런타임(실행 시점)에 수행되는 동적 타입 변수 선언이 가능해졌습니다.

그렇다면 var와 dynamic은 구체적으로 어떤 점이 다를까요? 아래에서 핵심적인 차이점을 비교해 보겠습니다.

var와 dynamic 주요 차이점 비교표

번호구분vardynamic
1정의var는 정적 타입(statically typed) 변수로, 변수에 초기화된 값의 타입을 기준으로 컴파일 시점에 데이터 타입이 결정됩니다.반면 dynamic은 동적 타입(dynamically typed) 변수로, 타입이 컴파일 시점이 아닌 런타임 시점에 결정됩니다.
2도입 버전var는 C# 3.0에서 처음 도입되었습니다.dynamic은 이후 C# 4.0에서 도입되었습니다.
3타입 판별var로 선언된 변수의 타입은 컴파일러가 컴파일 시점에 식별합니다.반면 dynamic으로 선언된 변수의 타입은 컴파일러가 런타임 시점에 식별합니다.
4선언 및 초기화var로 선언된 변수는 선언과 동시에 반드시 초기화해야 하며, 할당된 값을 통해 컴파일러가 변수의 타입을 파악합니다.반면 dynamic으로 선언된 변수는 선언 시점에 초기화하지 않아도 됩니다.
5예외 발생 여부var로 선언된 변수는 선언 시점에 초기화하지 않으면 컴파일 오류(예외)가 발생합니다.반면 dynamic으로 선언된 변수는 선언 시점에 초기화하지 않아도 오류가 발생하지 않습니다.

정리

결론적으로 var컴파일 시점에 타입이 고정되는 안전하고 엄격한 방식이며, dynamic런타임에 타입이 결정되는 유연하지만 상대적으로 위험 부담이 있는 방식입니다. 타입 안정성과 성능이 중요한 일반적인 코드에는 var를 사용하고, COM 객체 연동, 리플렉션, 동적 API 호출처럼 타입을 미리 알 수 없는 특수한 상황에서만 dynamic을 사용하는 것이 바람직합니다.