Megosztás a következőn keresztül:


Implicit módon beírt helyi változók és tömbök használata lekérdezési kifejezésben (C# programozási útmutató)

Implicit módon beírt helyi változókat akkor használhat, ha azt szeretné, hogy a fordító határozza meg a helyi változó típusát. A névtelen típusok tárolásához implicit módon beírt helyi változókat kell használnia, amelyeket gyakran használnak lekérdezési kifejezésekben. Az alábbi példák az implicit módon beírt helyi változók opcionális és kötelező használatát is szemléltetik a lekérdezésekben.

Az implicit módon beírt helyi változók deklarálása a var környezeti kulcsszóval történik. További információ: Implicit módon beírt helyi változók és implicit módon beírt tömbök.

Példák

Az alábbi példa egy gyakori forgatókönyvet mutat be, amelyben a var kulcsszóra van szükség: egy lekérdezési kifejezésre, amely névtelen típusú sorozatot hoz létre. Ebben a forgatókönyvben a lekérdezési változót és az foreach utasítás iterációs változót is implicit módon kell begépelni var használatával, mert nem fér hozzá a névtelen típus típusnevéhez. A névtelen típusokkal kapcsolatos további információkért lásd: Névtelen típusok.

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

Az alábbi példa a var kulcsszót használja hasonló helyzetben, de a var használata nem kötelező. Mivel student.LastName egy sztring, a lekérdezés végrehajtása sztringsorozatot ad vissza. Ezért a queryId típusa System.Collections.Generic.IEnumerable<string>helyett var deklarálható. A kulcsszó var a kényelem érdekében használatos. A példában a foreach utasítás iterációs változója explicit módon sztringként van begépelve, de ehelyett varhasználatával deklarálható. Mivel az iterációs változó típusa nem névtelen típus, a var használata lehetőség, nem követelmény. Ne feledje, hogy var maga nem típus, hanem utasítás a fordítónak a típus kikövetkeztetésére és hozzárendelésére.

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

Lásd még