Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können implizit typierte lokale Variablen verwenden, wenn der Compiler den Typ einer lokalen Variablen bestimmen soll. Sie müssen implizit eingegebene lokale Variablen verwenden, um anonyme Typen zu speichern, die häufig in Abfrageausdrücken verwendet werden. Die folgenden Beispiele veranschaulichen sowohl optionale als auch erforderliche Verwendung implizit typierter lokaler Variablen in Abfragen.
Implizit eingegebene lokale Variablen werden mithilfe des kontextbezogenen Schlüsselworts var deklariert. Weitere Informationen finden Sie unter Implizit typierten lokalen Variablen und implizit typierten Arrays.
Examples
Das folgende Beispiel zeigt ein häufiges Szenario, in dem das var Schlüsselwort erforderlich ist: ein Abfrageausdruck, der eine Abfolge anonymer Typen erzeugt. In diesem Szenario müssen sowohl die Abfragevariable als auch die Iterationsvariable in der foreach-Anweisung implizit durch var typisiert werden, da Sie keinen Zugriff auf einen Typnamen für den anonymen Typ haben. Weitere Informationen zu anonymen Typen finden Sie unter "Anonyme 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);
}
}
Im folgenden Beispiel wird das var Schlüsselwort in einer ähnlichen Situation verwendet, bei der die Verwendung var optional ist. Da student.LastName es sich um eine Zeichenfolge handelt, gibt die Ausführung der Abfrage eine Abfolge von Zeichenfolgen zurück. Daher könnte der Typ von queryId als System.Collections.Generic.IEnumerable<string> anstelle von var deklariert werden. Das Schlüsselwort var wird zur Vereinfachung verwendet. Im Beispiel wird die Iterationsvariable in der Anweisung foreach explizit als Zeichenfolge deklariert, kann aber stattdessen mit var deklariert werden. Da der Typ der Iterationsvariable kein anonymer Typ ist, ist die Verwendung var eine Option, keine Anforderung. Denken Sie daran, var selbst ist kein Typ, sondern eine Anweisung an den Compiler zum Ableiten und Zuweisen des Typs.
// 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}");
}