Share via


Gewusst wie: Verwenden von implizit typisierten lokalen Variablen und Arrays in einem Abfrageausdruck (C#-Programmierhandbuch)

Aktualisiert: April 2011

Sie können immer implizit typisierte lokale Variablen verwenden, wenn der Compiler den Typ einer lokalen Variablen bestimmen soll. Sie müssen implizit typisierte lokale Variablen verwenden, um anonyme Typen zu speichern, die häufig in Abfrageausdrücken verwendet werden. Die folgenden Beispiele veranschaulichen die optionale und die erforderliche Verwendung von implizit typisierten lokalen Variablen in Abfragen.

Implizit typisierte lokale Variablen werden mit dem var-Kontextschlüsselwort deklariert. Weitere Informationen finden Sie unter Implizit typisierte lokale Variablen (C#-Programmierhandbuch) und Implizit typisierte Arrays (C#-Programmierhandbuch).

Beispiel

Das folgende Beispiel zeigt ein typisches Szenario, in dem das var-Schlüsselwort erforderlich ist: Ein Abfrageausdruck, der eine Sequenz anonymer Typen erzeugt. In diesem Szenario müssen die Abfragevariable und die Iterationsvariable in der foreach-Anweisung mithilfe von var implizit 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 (C#-Programmierhandbuch).

private static void QueryNames(char firstLetter)
{
    // Create the query. var is required because
    // the query produces a sequence of anonymous types.
    var studentQuery =
        from student in students
        where student.FirstName[0] == firstLetter
        select new { student.FirstName, student.LastName };

    // Execute the query.
    foreach (var student in studentQuery)
    {
        Console.WriteLine("First = {0}, Last = {1}", student.FirstName, student.LastName);
    }
}

Im folgenden Beispiel wird das var-Schlüsselwort in einer ähnlichen Situation verwendet, in der jedoch die Verwendung von var optional ist. Da student.LastName eine Zeichenfolge ist, gibt die Ausführung der Abfrage eine Sequenz von Zeichenfolgen zurück. Daher kann der Typ von queryID als System.Collections.Generic.IEnumerable<string> statt als var deklariert werden. Das Schlüsselwort var wird aus praktischen Gründen verwendet. Im Beispiel wird die Iterationsvariable in der foreach-Anweisung explizit als string typisiert, sie kann jedoch stattdessen auch mit var deklariert werden. Da der Typ der Iterationsvariablen kein anonymer Typ ist, ist die Verwendung von var optional und nicht erforderlich. Denken Sie daran, dass var kein eigener Typ ist, sondern eine Anweisung an den Compiler, den Typ abzuleiten und zuzuweisen.

var queryID =
    from student in students
    where student.ID > 111
    select student.LastName;

foreach (string str in queryID)
{
    Console.WriteLine(str);
}

Siehe auch

Referenz

Erweiterungsmethoden (C#-Programmierhandbuch)

var (C#-Referenz)

Konzepte

C#-Programmierhandbuch

LINQ-Abfrageausdrücke (C#-Programmierhandbuch)

Weitere Ressourcen

LINQ (Language-Integrated Query, sprachintegrierte Abfrage)

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

April 2011

Text klarer formuliert.

Kundenfeedback.