English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# 명시적 변수(var)

C#에서 변수는 데이터 타입을 사용하여 선언해야 하며, 이를 명시적 타입 변수라고 합니다.

int i = 100;// 명시적 변수

C#3.0는 var 키워드를 사용하여 메서드 수준 변수를 선언할 수 있게 하여 데이터 타입을 명시적으로 지정하지 않습니다.                    

var j = 100; // 임의적 타입의 로컬 변수

컴파일러는 = 연산자의 오른쪽에 있는 표현식에서 변수의 타입을 추론합니다. 위에서 var는 int로 컴파일됩니다.

표현식에서 타입을 추론합니다.

int i = 10;
var j = i + 1; // int로 컴파일됩니다

var는 어떤 내장 데이터 타입, 사용자 정의 타입 또는 익명 타입 변수를 선언할 수 있습니다. 아래의 예제는 C# 컴파일러가 값을 기반으로 타입을 추론하는 것을 보여줍니다:        

static void Main(string[] args)
{
    var i = 10;
    Console.WriteLine("i 타입은 {0}입니다", i.GetType());
    var str = "Hello World!!";
    Console.WriteLine("str 타입은 {0}입니다", str.GetType());
    var dbl = 100.50d;
    Console.WriteLine("dbl 타입은 {0}입니다", dbl.GetType());
    var isValid = true;
    Console.WriteLine("isValid 타입은 {0}입니다", isValid.GetType());
    var ano = new { name = "Steve" };
    Console.WriteLine("ano 타입은 {0}입니다", ano.GetType());
    var arr = new[] { 1, 10, 20, 30 };
    Console.WriteLine("arr 타입은 {0}입니다", arr.GetType());
    var file = new FileInfo("MyFile");
    Console.WriteLine("파일 타입은 {0}입니다", file.GetType());
}

은답 유형 변수는 선언 시 초기화되어야 합니다; 그렇지 않으면 C# 컴파일러는 오류를 발생시킵니다: 은답 유형 변수를 초기화해야 합니다.

var i; // 컴파일 시 오류: 은답 유형 변수를 초기화해야 합니다
i = 100;

var는 단일 문장에서 변수를 다시 선언할 수 없습니다.

var i = 100, j = 200, k = 300; // 오류: var 변수를 단일 문장에서 선언할 수 없습니다//다음 내용도 유효합니다 var i = 100; 
var j = 200; 
var k = 300;

var는 함수 매개변수로 사용할 수 없습니다.

void Display(var param) //컴파일 시 오류
{
    Console.Write(param);
}

var는 for와 foreach 루프에서 사용할 수 있습니다.

for(var i = 0; i < 10; i++)
{		Console.WriteLine(i);
}

var는 LINQ 쿼리와 함께 사용할 수 있습니다.

// 문자열 집합
IList<string> stringList = new List<string>() { 
    "C# Tutorials",
    "VB.NET Tutorials",
    "Learn C"++",
    "MVC Tutorials",
    "Java" 
};
// LINQ 쿼리 문법
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;