Impliciet getypte lokale variabelen en matrices gebruiken in een query-expressie (C#-programmeerhandleiding)
U kunt impliciet getypte lokale variabelen gebruiken wanneer u wilt dat de compiler het type lokale variabele bepaalt. U moet impliciet getypte lokale variabelen gebruiken om anonieme typen op te slaan, die vaak worden gebruikt in query-expressies. In de volgende voorbeelden ziet u zowel optioneel als vereist gebruik van impliciet getypte lokale variabelen in query's.
Impliciet getypte lokale variabelen worden gedeclareerd met behulp van het contextuele trefwoord var . Zie Impliciet getypte lokale variabelen en impliciet getypte matrices voor meer informatie.
Voorbeelden
In het volgende voorbeeld ziet u een veelvoorkomend scenario waarin het var
trefwoord is vereist: een query-expressie die een reeks anonieme typen produceert. In dit scenario moeten zowel de queryvariabele als de iteratievariabele in de foreach
instructie impliciet worden getypt, var
omdat u geen toegang hebt tot een typenaam voor het anonieme type. Zie Anonieme typen voor meer informatie over anonieme typen.
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);
}
}
In het volgende voorbeeld wordt het var
trefwoord gebruikt in een situatie die vergelijkbaar is, maar waarin het gebruik var
optioneel is. Omdat student.LastName
dit een tekenreeks is, retourneert de uitvoering van de query een reeks tekenreeksen. Daarom kan het type queryId
worden gedeclareerd als System.Collections.Generic.IEnumerable<string>
in plaats van var
. Trefwoord var
wordt gebruikt voor het gemak. In het voorbeeld wordt de iteratievariabele in de foreach
instructie expliciet getypt als een tekenreeks, maar in plaats daarvan kan deze worden gedeclareerd met behulp van var
. Omdat het type van de iteratievariabele geen anoniem type is, is het gebruik van var
een optie, geen vereiste. Onthoud dat var
zichzelf geen type is, maar een instructie aan de compiler om het type af te afleiden en toe te wijzen.
// 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);
}
Zie ook
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort: Gedurende 2024 worden GitHub Issues uitgefaseerd als het feedbackmechanisme voor inhoud. Dit wordt vervangen door een nieuw feedbacksysteem. Ga voor meer informatie naar:Feedback verzenden en bekijken voor