다음을 통해 공유


쿼리 식에서 암시적으로 형식화된 지역 변수 및 배열을 사용하는 방법(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 형식을 System.Collections.Generic.IEnumerable<string>대신 var 선언할 수 있습니다. 키워드 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: {str}");
}

참고하십시오