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

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

C#에서 var와 dynamic의 핵심 차이점

C#에는 vardynamic이라는 두 가지 변수 선언 방식이 있습니다. 두 키워드는 비슷해 보이지만 동작 방식이 완전히 다릅니다. 가장 큰 차이점은 var는 엄격한 타입 검사(정적 타입)를 수행하는 반면, dynamic은 엄격한 타입 검사를 수행하지 않는다는 점입니다.

var 선언 방법

var a = 10;

var로 선언된 변수는 암시적 타이핑(implicitly typed) 변수입니다. 컴파일러가 초기화 값을 기준으로 타입을 자동으로 추론합니다. 위 예제에서 변수 a는 정수(int) 타입으로 확정되며, 이후에는 다른 타입의 값을 할당할 수 없습니다.

dynamic 선언 방법

dynamic a = 10;

dynamic으로 선언된 변수는 컴파일 시점에 타입이 고정되지 않고, 런타임(runtime)에 실제 타입이 결정됩니다. 따라서 하나의 변수에 서로 다른 타입의 값을 자유롭게 할당할 수 있습니다.

컴파일 오류 처리 방식의 차이

var는 암시적으로 타입이 지정되지만, 컴파일 시점의 타입 검사를 우회하지 않습니다. 즉, 잘못된 타입의 값을 할당하면 컴파일 오류가 발생합니다.

var 사용 예제

var a = 10;
a = "Demo"; // 컴파일 오류 발생

위 코드에서 변수 a는 이미 int 타입으로 추론되었기 때문에, 문자열 "Demo"를 할당하는 순간 컴파일 오류가 발생합니다. 덕분에 개발 단계에서 타입 관련 실수를 조기에 발견할 수 있습니다.

dynamic 사용 예제

dynamic a = 10;
a = "Demo"; // 오류 없음

반면 dynamic으로 선언하면 컴파일러가 타입 검사를 수행하지 않으므로, 동일한 코드도 오류 없이 컴파일됩니다. 단, 타입 불일치로 인한 오류가 런타임에 발생할 수 있으므로 신중하게 사용해야 합니다.

var vs dynamic 비교 요약

구분vardynamic
타입 결정 시점컴파일 시간런타임
타입 추론 방식초기화 값 기반 추론런타임에 동적으로 결정
타입 변경 가능 여부불가능가능
안전성높음 (컴파일 오류로 사전 감지)낮음 (런타임 오류 발생 가능)

결론적으로, 타입 안정성과 성능이 중요한 일반적인 코드에서는 var를 사용하고, COM 객체 연동이나 JSON 파싱 등 타입이 런타임에 결정되는 특수한 상황에서만 dynamic을 사용하는 것이 좋습니다.