Sdílet prostřednictvím


Postupy: Použití implicitně typovaných lokálních proměnných a polí ve výrazu dotazu (Průvodce programováním v C#)

Implicitně zadaný místní proměnné lze použít, když chcete kompilátoru k určení typu místní proměnné.Implicitně zadaný místní proměnné je nutné použít k uložení anonymních typů, které se často používají ve výrazech dotazu.Následující příklady ilustrují volitelné i požadované používá implicitně zadaný místní proměnné v dotazech.

Implicitně zadaný místní proměnné jsou deklarovány pomocí var kontextové klíčové slovo.Další informace naleznete v tématu Implicitně typované lokální proměnné (Průvodce programováním v C#) a Implicitně typovaná pole (Průvodce programováním v C#).

Příklad

Následující příklad ukazuje běžný scénář, ve kterém var je vyžadováno klíčové slovo: výraz dotazu, který vytvoří posloupnost anonymních typů.V tomto scénáři proměnnou dotazu a iterační proměnná v foreach prohlášení musí být zadány implicitně pomocí var protože nemáte přístup k názvu typu pro anonymní typ.Další informace o typech anonymní, viz Anonymní typy (Průvodce programováním v 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);
    }
}

V následujícím příkladu var klíčové slovo v podobné situaci, ale ve kterém použití var je nepovinný.Protože student.LastName je řetězec, spuštění dotazu vrátí sekvence řetězce.Proto typu queryID nelze deklarovat jako System.Collections.Generic.IEnumerable<string> namísto var.Klíčové slovo var se používá pro pohodlí.V příkladu iterační proměnná v foreach příkaz explicitně zadán jako řetězec, ale může místo toho deklarována pomocí var.Protože typ iterační proměnná není anonymní typ použití var je možnost, není požadavek.Nezapomeňte, že var sama není typ, ale instrukce kompilátoru odvodit a přiřadit 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);
}

Viz také

Referenční dokumentace

Metody rozšíření (Průvodce programováním v C#)

var (Referenční dokumentace jazyka C#)

Koncepty

Průvodce programováním v C#

LINQ – výrazy dotazů (Průvodce programováním v C#)

Další zdroje

LINQ (Language-Integrated Query)