Share via


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