Compartilhar via


Como usar variáveis locais de tipo implícito e matrizes em uma expressão de consulta (Guia de Programação em C#)

Será possível usar variáveis locais de tipo implícito sempre que você desejar que o compilador determine o tipo de uma variável local. É necessário usar variáveis locais de tipo implícito para armazenar tipos anônimos, usados frequentemente em expressões de consulta. Os exemplos a seguir ilustram usos obrigatórios e opcionais de variáveis locais de tipo implícito em consultas.

As variáveis locais de tipo implícito são declaradas usando a palavra-chave contextual var. Para obter mais informações, consulte Variáveis locais de tipo implícito e Matrizes de tipo implícito.

Exemplos

O exemplo a seguir mostra um cenário comum em que a palavra-chave var é necessária: uma expressão de consulta que produz uma sequência de tipos anônimos. Nesse cenário, a variável de consulta e a variável de iteração na instrução foreach devem ser tipadas implicitamente usando var, porque você não tem acesso a um nome de tipo para o tipo anônimo. Para obter mais informações sobre tipos anônimos, consulte Tipos anônimos.

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);
    }
}

O exemplo a seguir usa a palavra-chave var em uma situação semelhante, mas na qual o uso de var é opcional. Como student.LastName é uma cadeia de caracteres, a execução da consulta retorna uma sequência de cadeias de caracteres. Portanto, o tipo de queryId poderia ser declarado como System.Collections.Generic.IEnumerable<string> em vez de var. A palavra-chave var é usada por conveniência. No exemplo, a variável de iteração na instrução foreach tem tipo explícito como uma cadeia de caracteres, mas, em vez disso, poderia ser declarada usando var. Como o tipo da variável de iteração não é um tipo anônimo, o uso de var é opcional, não obrigatório. Lembre-se de que var por si só não é um tipo, mas uma instrução para o compilador inferir e atribuir o tipo.

// 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);
}

Confira também