토요일에 있었던 김수영MVP님의 교육을 다녀온 후에
좋은 내용을 너무 많이 듣고 와서
정리의 필요성을 느끼고 정리합니다. ㅋ
(수영님 다시한번 감사~ )

C# 3.0에서 새로 생긴 타입(?) 인 var는 Javascript에서 많이 보던 녀석이죠.
int나 string처럼 변수에 들어가는 녀석들의 종류가 미리 명시되는게 아니라
변수에 값이 대입되고 나서야 타입이 정해지는(맞죠? ;;;)
여러면서에 C#의 Object타입과도 비슷하지만.
다른녀석이죠

C#의 Object와 비교해 본다면
Object타입은 .NET에서의 모든 자료형은 Object를 상속받기 때문에
어떤형식도 Object에 넣을수는 있지만. Object는 타입을 추정할수가 없지요

예를들어서 제가

object objType = "초기화";
var varType = "초기화";

이런 코드를 작성했다고 할때

이 변수를 가지고 뭔가를 하려고 할때 . 을 찍어보면 차이가 확 나타나요




var 타입의 경우는
'이녀석이 string이구만~ ' 이라고 타입을 추정해서 인텔리센스세 string이 지원하는 메소드등등이 줄줄 보이는데요
object의 경우는 그렇지 않죠.
아주아주아주 기본적인 (이게 Object형식이면 모두 지원되는 메소드 겠죠?) 메소드 딸랑 4개만 보이네요.

또 다른 차이는
var타입의 경우는 Compile 때 타입을 검사하고 Object는 Runtime시에 검사를 한다는 겁니다.
이말은
var타입의 경우는 compile시에 타입이 확정되기 때문에
불필요한 boxing 이나 unboxing등이 생기지 않는다는거죠
compile때 이미
'이녀석은 int구나..'
혹은
'이녀석은 string이구나' 등이 정해지니
그럴일이 없겠죠.

또한 compile시에 타입을 검사하고 확정하기 떄문에 타입이 변경될수 없어요.
처음에 var타입에 숫자를 넣었다면 앞으로 그 변수에는 숫자만 넣어야 한다는거죠.

출처?는 김수영MVP님의 주말특강입니다
by 피요히코~ 2009. 4. 26. 13:42