int, string 같은 명시적 형식 대신 var를 사용해서 변수를 선언하면 컴파일러가 자동으로 해당 변수의 형식을 지정해줍니다.

단, var 키워드를 이용해서 변수를 선언하려면 반드시 선언과 동시에 초기화를 해줘야 합니다.

그래야 컴파일러가 그 데이터를 보고 형식을 추론할 수 있습니다

var a = 3;            // a는 int 형식
var b = "Hello";      // b는 string 형식

var는 지역 변수로만 사용할 수 있습니다.

클래스의 필드를 선언할 때는 반드시 명시적 형식을 선언해야 합니다.

클래스의 필드는 선언과 같이 초기화를 하지 않는 경우가 많은데, var 키워드로 필드를 선언하면 컴파일러가 무슨 형식인지 파악할 길이 없기 때문입니다.

var와 object형식?

object 형식은 object형식일 뿐입니다. 예를 들어 object a = 20; 이 컴파일돼서 실행되면 CLR은 20을 박싱해서 힙에 넣어놓고 a가 을 가리키도록 만들 겁니다.

하지만 var a = 20; 은 컴파일 시점에 컴파일러가 a에 적합한 데이터 형식을 파악해서 int a = 20;

으로 바꿔 컴파일합니다. CLR이 해당 코드를 실행할 때는 a가 var로 선언되었는지조차 눈치채지 못하고 int 형식의 객체 a에 20을 담아 스택에 올립니다.