지역변수의 타입을 암시적으로 선언하는 것이 좋은 이유는 C# 언어가 익명 타입(anonymous type)

을 지원하기위해서 타입을 암시적으로 선언할 수 있는 손쉬운 방법을 제공하기 때문이다. 또한 일부

쿼리 구문의 경우 IEnumerable<T> 를 반환하는 경우도 있지만 IQueryable<T> 를 반환하기도 하는

데, 정확한 반환 타입을 알지 못한 채 올바르지 않은 타입을 명시적으로 지정하게 되면 득보다 실이

많다. 예를 들어 IQueryable<T> 컬렉션을 IEnumerable<T> 로 강제 형변환하게 되면

IQueryProvider 가 제공하는 장점을 모두 잃게 된다

(IEnumerable<T> 데이터 소스와 IQueryable<T> 데이터 소스를 구분하라 참조).

코드를 읽을 때도 var를 사용하여 암시적으로 변수를 선언한 코드가 더 잘 읽힌다. 코드를 읽다 보면

Dictionary<int, Queue<string>> 과 깉이 정확히 기술된 타입 자체보다 jobsQueuedByRegion과

같이 타입을 유추할 수 있는 변수의 이름이 더 큰 도움이 된다.

이런 여러 가지 이유로 지역변수를 선언할 때는 var을 사용하는 편이 낫다. var를 사용하면 개발자

입장에서는 변수의 타입과 같이 지엽적인 부분보다 변수의 의미 파악에 더 집중할 수 있다.

컴파일러 관점에서 살펴본다면 개발자가 특정 객체의 타입을 명시적으로 지정하지 않더라도 객체

생성에 문제가 있을 경우 오류를 보고할 수 있다. 타입을 명시적으로 지정할 경우 타입 안정성이

향상될 것이라 생각하지만 이 또한 사실이 아니다. 앞서 살펴본 IQueryable<T> 와 IEnumerable<T>

의 예와 같이 개발자가 올바르게 타입을 지정하지 않으면 오히려 타입 안정성을 해치는 꼴이 될 수도

있다.