Comment : utiliser des tableaux et des variables locales 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 facultative et requise des variables locales implicitement typées dans des requêtes.
Les variables locales implicitement typées sont déclarées en utilisant le mot clé contextuel var.Pour plus d'informations, consultez Variables locales implicitement typées (Guide de programmation C#) et Tableaux implicitement typés (Guide de programmation C#).
Exemple
L'exemple suivant présente un scénario courant dans lequel le mot clé var est requis : une 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 dans l'instruction foreach doivent être implicitement typées en utilisant var parce que vous n'avez pas accès à un nom de type du type anonyme.Pour plus d'informations sur les types anonymes, consultez Types anonymes (Guide de programmation 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);
}
}
L'exemple suivant utilise le mot clé var dans une situation de similaire, mais dans laquelle l'utilisation de var est facultative.Dans la mesure où student.LastName est une chaîne, l'exécution de la requête retourne une séquence de chaînes.Par conséquent, le type de queryID peut être déclaré comme System.Collections.Generic.IEnumerable<string> au lieu de var.Le mot clé var est utilisé pour des raisons de commodité.Dans l'exemple, la variable d'itération dans l'instruction foreach est explicitement typée comme chaîne, mais elle peut à la place ê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 de var est une option, pas une obligation.N'oubliez pas que var lui-même n'est pas un type, mais une instruction demandant au compilateur de déduire et d'assigner 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: {0}", str);
}
Voir aussi
Référence
Méthodes d'extension (Guide de programmation C#)
Concepts
Expressions de requête LINQ (Guide de programmation C#)