Porady: użycie niejawnie wpisanych zmiennych lokalnych i tablic w wyrażeniu kwerendy (Przewodnik programowania w języku C#)

Można użyć niejawnie maszynowy zmiennych lokalnych, w każdym przypadku, gdy chcesz kompilatora, aby określić typ zmiennej lokalnej.Zmienne lokalne niejawnie maszynowy musi służy do przechowywania typy anonimowe, które są często używane w wyrażeniach kwerend.Poniższe przykłady ilustrują zarówno opcjonalne wymagane zastosowań niejawnie maszynowy zmiennych lokalnych w kwerendach.

Niejawnie maszynowy zmienne lokalne są deklarowane przy użyciu var. kontekstowe słowa kluczowego.Aby uzyskać więcej informacji, zobacz Niejawnie wpisane zmienne lokalne (Przewodnik programowania w języku C#) i Niejawnie wpisane tablice (Przewodnik programowania w języku C#).

Przykład

Poniższy przykład przedstawia typowych scenariuszy, w którym var słowo kluczowe jest wymagane: wyrażenie kwerendy, która wytwarza sekwencja typy anonimowe.W tym scenariuszu, zarówno zmienna kwerendy, jak i Zmienna iteracji w foreach oświadczenie musi być wpisana niejawnie za pomocą var , ponieważ nie masz dostępu do nazwy typu dla typu anonimowe.Aby uzyskać więcej informacji o typach anonimowego, zobacz Typy anonimowe (Przewodnik programowania w języku C#).

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);
    }
}

W poniższym przykładzie użyto var słowa kluczowego w podobnej sytuacji, ale w którym stosowanie var jest opcjonalny.Ponieważ student.LastName jest ciągiem, wykonanie zwraca kwerendy Sekwencja ciągów.W związku z tym, typ queryID może być zadeklarowany jako System.Collections.Generic.IEnumerable<string> zamiast var.Słowo kluczowe var jest używana dla wygody.W przykładzie zmienna iteracji w foreach instrukcji jest jawnie wpisana jako ciąg znaków, ale zamiast niego może być deklarowane przy użyciu var.Ponieważ nie jest typu Zmienna iteracji typ anonimowy, wykorzystanie var jest to opcja, nie wymaganiem.Należy pamiętać, że var sam nie jest typu, ale instrukcji w kompilatorze, aby rozpoznać i przypisywane jako zamówienie typu.

// 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);
}

Zobacz też

Informacje

Metody rozszerzeń (Przewodnik programowania w języku C#)

var (odwołanie w C#)

Koncepcje

Przewodnik programowania w języku C#

Wyrażenia kwerend LINQ (Przewodnik programowania w języku C#)

Inne zasoby

LINQ (zapytania o języku zintegrowanym)