Compartilhar via


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

Você pode usar variáveis de local digitadas implicitamente sempre que você deseja que o compilador para determinar o tipo de uma variável local. Você deve usar variáveis de local digitadas implicitamente para armazenar tipos anônimos, que são freqüentemente usados em expressões de consulta. Os exemplos a seguir ilustram opcionais e necessários usos de variáveis de locais digitadas implicitamente em consultas.

Variáveis de local digitadas implicitamente são declaradas usando a var palavra-chave contextual. Para obter mais informações, consulte Variáveis locais de tipo implícito (Guia de Programação em C#) e Matrizes de tipo implícito (Guia de Programação em C#).

Exemplo

O exemplo a seguir mostra um cenário comum em que o var palavra-chave é necessária: uma expressão de consulta que produz uma seqüência de tipos anônimos. Nesse cenário, a variável de consulta e o da variável de iteração na foreach instrução deve ser digitada 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 (Guia de Programação em C#).

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 var palavra-chave em uma situação semelhante, mas em que o uso de var é opcional. Porque student.LastName é uma seqüência de caracteres, execução da consulta para retornar uma seqüência de cadeias de caracteres. Portanto, o tipo de queryID poderia ser declarada como System.Collections.Generic.IEnumerable<string> em vez de var. Palavra-chave var é usado por conveniência. No exemplo, a variável de iteração na foreach instrução explicitamente é digitada como uma seqüência de caracteres, mas em vez disso, podiam ser declarada usando var. Porque o tipo da variável de iteração não é um tipo anônimo, o uso de var é uma opção, não um requisito. Lembre-se, var propriamente dito não é um tipo, mas uma instrução para o compilador para 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);
}

Consulte também

Referência

Métodos de extensão (Guia de Programação em C#)

var (Referência de C#)

Conceitos

Guia de Programação em C#

Expressões de consulta LINQ (Guia de Programação em C#)

Outros recursos

LINQ (Consulta Integrada à Linguagem)