Partager via


Comment utiliser des variables et des tableaux locaux implicitement typés dans une expression de requête (Guide de programmation C#)

Vous pouvez utiliser des variables locales implicitement typées chaque fois que vous souhaitez que le compilateur détermine le type d’une variable locale. Vous devez utiliser des variables locales implicitement typées pour stocker des types anonymes, qui sont souvent utilisés dans les expressions de requête. Les exemples suivants illustrent les utilisations facultatives et requises de variables locales implicitement typées dans les requêtes.

Les variables locales implicitement typées sont déclarées à l’aide du mot clé contextuel var . Pour plus d’informations, consultez Variables locales implicitement typées et tableaux implicitement typés.

Exemples

L’exemple suivant montre un scénario courant dans lequel le var mot clé est requis : expression de requête qui produit une séquence de types anonymes. Dans ce scénario, la variable de requête et la variable d’itération de l’instruction foreach doivent être implicitement typées à l’aide var du fait que vous n’avez pas accès à un nom de type pour le type anonyme. Pour plus d’informations sur les types anonymes, consultez Types anonymes.

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

L’exemple suivant utilise le var mot clé dans une situation similaire, mais dans laquelle l’utilisation var est facultative. Comme student.LastName il s’agit d’une chaîne, l’exécution de la requête retourne une séquence de chaînes. Par conséquent, le type de queryId pourrait être déclaré comme System.Collections.Generic.IEnumerable<string> au lieu de var. Le mot clé var est utilisé pour des raisons pratiques. Dans l’exemple, la variable d’itération figurant dans l’instruction foreach est explicitement typée en tant que chaîne, mais elle aurait pu être déclarée à l’aide de var. Étant donné que le type de la variable d’itération n’est pas un type anonyme, l’utilisation est var une option, et non une exigence. N’oubliez pas que `var` n’est pas un type en soi, mais une instruction au compilateur pour déterminer et affecter le type.

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

Voir aussi