Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Неявно типизированные локальные переменные можно использовать всякий раз, когда компилятору требуется определить тип локальной переменной. Для хранения анонимных типов, которые часто используются в выражениях запросов, необходимо использовать неявно типизированные локальные переменные. В следующих примерах показаны как необязательные, так и обязательные использование неявно типизированных локальных переменных в запросах.
Неявно типизированные локальные переменные объявляются с помощью контекстного ключевого слова 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}");
}