쿼리 식에서 암시적으로 형식화된 지역 변수 및 배열을 사용하는 방법(C# 프로그래밍 가이드)

컴파일러에서 지역 변수의 형식을 확인하려는 경우 항상 암시적으로 형식화된 지역 변수를 사용할 수 있습니다. 쿼리 식에 자주 사용되는 무명 형식을 저장하려면 암시적으로 형식화된 지역 변수를 사용해야 합니다. 다음 예제에서는 쿼리에서 암시적으로 형식화된 지역 변수의 선택적 및 필수 사용을 보여 줍니다.

암시적으로 형식화된 지역 변수는 var 상황별 키워드를 사용하여 선언됩니다. 자세한 내용은 암시적으로 형식화된 지역 변수암시적으로 형식화된 배열을 참조하세요.

예제

다음 예제에서는 var 키워드가 필요한 일반적인 시나리오로, 무명 형식의 시퀀스를 생성하는 쿼리 식을 보여 줍니다. 이 시나리오에서는 무명 형식의 형식 이름에 대한 액세스 권한이 없기 때문에 foreach 문의 쿼리 변수와 반복 변수가 모두 var을 사용하여 암시적으로 형식화되어야 합니다. 무명 형식에 대한 자세한 내용은 무명 형식을 참조하세요.

private static void QueryNames(char firstLetter)
{
    // Create the query. Use of var is required because
    // the query produces a sequence of anonymous types:
    // System.Collections.Generic.IEnumerable<????>.
    var studentQuery =
        from student in students
        where student.FirstName[0] == firstLetter
        select new { student.FirstName, student.LastName };

    // Execute the query and display the results.
    foreach (var anonType in studentQuery)
    {
        Console.WriteLine("First = {0}, Last = {1}", anonType.FirstName, anonType.LastName);
    }
}

다음 예제에서는 유사하지만 var 사용이 선택 사항인 상황에서 var 키워드를 사용합니다. student.LastName이 문자열이기 때문에 쿼리를 실행하면 문자열 시퀀스가 반환됩니다. 따라서 queryId의 형식을 var 대신 System.Collections.Generic.IEnumerable<string>로 선언할 수 있습니다. var 키워드는 편의상 사용됩니다. 예제에서 foreach 문의 반복 변수는 명시적으로 문자열로 형식화되었지만, 대신 var을 사용하여 선언할 수도 있습니다. 반복 변수의 형식이 무명 형식이 아니기 때문에 var 사용은 요구 사항이 아니라 옵션입니다. var 자체는 형식이 아니라 형식을 유추하고 할당하도록 컴파일러에 지시하는 명령입니다.

// Variable queryId could be declared by using
// System.Collections.Generic.IEnumerable<string>
// instead of var.
var queryId =
    from student in students
    where student.Id > 111
    select student.LastName;

// Variable str could be declared by using var instead of string.
foreach (string str in queryId)
{
    Console.WriteLine("Last name: {0}", str);
}

참고 항목