Como usar matrizes e variáveis locais digitadas implicitamente em uma expressão de consulta (Guia de Programação em C#)
Você pode usar variáveis locais digitadas implicitamente sempre que quiser que o compilador determine o tipo de uma variável local. Você deve usar variáveis locais digitadas implicitamente para armazenar tipos anônimos, que geralmente são usados em expressões de consulta. Os exemplos a seguir ilustram os usos opcionais e obrigatórios de variáveis locais digitadas implicitamente em consultas.
As variáveis locais digitadas implicitamente são declaradas usando a palavra-chave contextual var . Para obter mais informações, consulte Variáveis locais digitadas implicitamente e Matrizes digitadas implicitamente.
Exemplos
O exemplo a seguir mostra um cenário comum no qual a var
palavra-chave é 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 foreach
variável de iteração na instrução devem ser digitadas 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 var
palavra-chave 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 poderia ser declarado como System.Collections.Generic.IEnumerable<string>
em vez de .queryId
var
A palavra-chave var
é usada por conveniência. No exemplo, a variável de iteração na instrução é explicitamente digitada foreach
como uma cadeia de caracteres, mas pode ser declarada usando var
. Como 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
em si 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);
}