본문 바로가기
Programming Language/C#

[C#] var

by dbxxrud 2019. 4. 28.

 

 

var - 데이터의 타입을 개발자가 아닌 컴파일러가 결정하게 하는 변수

 

c#은 강력한 형식 검사를 하는 언어이지만, var 키워드를 통해서 약한 형식 검사를 하는 언어의 편리함도 지원한다. int, string 같은 명시적 형식 대신 var를 사용해서 변수를 선언하면 컴파일러가 자동으로 해당 변수의 형식을 지정해준다! 

 

 

초기화

 

단, var 키워드를 이용해서 변수를 선언하려면 반드시 선언과 동시에 초기화를 해주어야 한다. 그래야 컴파일러가 그 데이터를 보고 형식을 추론할 수 있다. 

 

var a = 3; // a는 int 형식

var b = "Hello~" // b는 string형식

 

 

var는 지역 변수로만 사용 가능하다!

 

또한 var는 지역변수로만 사용할 수 있다. var 키워드로 필드를 선언하면 컴파일러가 무슨 형식인지 알 수가 없기 때문이다. 

 

 

var & object

 

object형과 무엇이 다른지 고민을 했다. 하지만 object형식은 object형식이다. object 형식은 박싱과 언박싱을 거치지만 var는 컴파일 시점에 컴파일러가 적합한 데이터 형식을 파악해서 int a, string b, double c 등등으로 바꿔 컴파일하며, 데이터 형식 객체 a, b, c, 에 값을 담아서 스택에 올려둔다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System;
using static System.Console;
using System.Collections;
namespace Practice2
{
    class MainApp
    {
        public static void Main()
        {
            var a = 20;
            WriteLine("Type: {0}, Value: {1}", a.GetType(), a);
 
            var b = 3.1414213;
            WriteLine("Type: {0}, Value: {1}", b.GetType(), b);
 
            var c = "Hello, World!";
            WriteLine("Type: {0}, Value: {1}", c.GetType(), c);
 
            var d = new int[] { 102030 };
            Write("Type: {0}, Value: ", d.GetType());
            foreach (var e in d)
                Write("{0} ", e);
 
            WriteLine();
        }
    }
}
 
 

 

'Programming Language > C#' 카테고리의 다른 글

[C#] Null 병합 연산자 (Null-Coalescing Operator)  (0) 2019.04.28
[C#] 널 조건부 연산자 (Null-conditional operator)  (0) 2019.04.28
[C#] Nullable 형식  (0) 2019.04.28
[C#] 박싱과 언박싱  (0) 2019.04.28
[C#] object 형식  (0) 2019.04.28