[C#] var형식
C# 2017. 3. 24. 08:18
C#은 변수나 상수에대해 깐깐하게 형식 검사를 하는 강력한 형식의 언어이다.
하지만, 약한 형식 검사를 지원해주기도 한다. 바로 var라는 키워드 이다.
강력한 형식검사
- 강력한 형식 검사는 프로그래머의 실수를 줄여주는 장점이 있다.
- 의도치 않은 형식의 데이터를 읽거나 할당하는 일을 막아준다.
약한 형식검사(var)
- 자동으로 해당 변수의 형식을 지정해준다.
- int, long, unit, ulong 같은 형식을 외울 필요가 없다.
- 변수의 선언과 동시에 초기화 해야한다.
- 지역 변수로만 사용할 수 있다.
var키워드를 사용해 보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | using System; namespace UsingVar { class MainApp { static void Main(string[] args) { var a = 20; Console.WriteLine("Type {0}, Value {1}", a.GetType(), a); // 결과 : Type: System.Int32, Value: 20 var b = 3.14; Console.WriteLine("Type {0}, Value {1}", b.GetType(), b); // 결과 : Type: System.Double, Value: 3.14 var c = "헬로우 월드?"; Console.WriteLine("Type {0}, Value {1}", c.GetType(), c); // 결과 : Type: System.String, Value: 헬로우 월드? } } } | cs |
배열도 사용 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | using System; namespace UsingVar { class MainApp { static void Main(string[] args) { var a = new int[] {10,20,30}; Console.WriteLine("Type {0}, Value: ", a.GetType()); foreach(var e in a) Console.Write("{0} ", e) Console.WriteLine(); // 결과 : Type: System.Int32[], Value: 10 20 30 } } } | cs |
※ var형식과 object형식
위의 예제코드를 object형식으로도 작성이 가능하다.
그럼 var와 object는 같은거 아닌가? 라고 생각할수도 있지만.
아니다.
object a = 20;
이라는 코드가 있다고 하자.
컴파일이 실행되면 20은 박싱되어 힙에 들어가고 a는 힙을 가르키게 된다.
var a = 20;은 컴파일러가 a의 형식을 파악한다.
int a = 20;으로 바꿔 컴파일 시킨다.
컴파일이 실행되면 a를 스택에 올려놓게 된다.
두 개의 형식은 명확히 다른거라고 알아두자.
'C#' 카테고리의 다른 글
[C#] 메소드 오버로딩, 가변길이 매개 변수, 선택적 매개 변수 (0) | 2017.03.25 |
---|---|
[C#] 참조에 의한 매개 변수 전달. ref / 출력 전용 매개 변수. out (0) | 2017.03.24 |
[C#] 공용 형식 시스템. (0) | 2017.03.24 |
[C#] Object형식, 박싱과 언박싱. (1) | 2017.03.23 |
[C#] 값 형식과 참조형식 (0) | 2017.03.23 |