Procedura: utilizzare variabili e matrici locali tipizzate in modo implicito in un'espressione di query (Guida per programmatori C#)
Aggiornamento: novembre 2007
È necessario utilizzare variabili locali tipizzate in modo implicito per archiviare i tipi anonimi. È inoltre possibile utilizzarle in qualsiasi altra situazione nella quale si desidera che il compilatore determini il tipo di una variabile locale, ovvero una variabile dichiarata nell'ambito del metodo. Negli esempi seguenti viene illustrato come utilizzare variabili tipizzate in modo implicito in entrambi gli scenari.
Le variabili locali tipizzate in modo implicito vengono dichiarate utilizzando la parola chiave contestuale var. Per ulteriori informazioni, vedere Variabili locali tipizzate in modo implicito (Guida per programmatori C#) e Matrici tipizzate in modo implicito (Guida per programmatori C#).
Esempio
Nell'esempio seguente viene illustrato come utilizzare la parola chiave var in un scenario comune in cui è necessaria, ovvero durante la creazione e l'esecuzione di un'espressione di query che produce una sequenza di tipi anonimi. Si noti che in questo scenario, non solo la variabile della query, ma anche la variabile di iterazione nell'istruzione foreach deve essere tipizzata in modo implicito utilizzando var.
private static void QueryNames(char firstLetter)
{
// Create the query. var is required because
// the query produces a sequence of anonymous types.
var studentQuery =
from student in students
where student.FirstName[0] == firstLetter
select new { student.FirstName, student.LastName };
// Execute the query.
foreach (var student in studentQuery)
{
Console.WriteLine("First = {0}, Last = {1}", student.FirstName, student.LastName);
}
}
Nell'esempio presentato più avanti in questo argomento viene illustrato come utilizzare la parola chiave var come convenzione sintattica anche quando non è necessaria. Per illustrare questa costruzione, solo la variabile della query viene tipizzata in modo implicito. La variabile di iterazione nell'istruzione foreach è tipizzata in modo esplicito, ma può essere dichiarata anche utilizzando var. Si ricordi che var non è un tipo in sé e per sé, ma piuttosto un'istruzione per il compilatore di dedurre e assegnare il tipo.
var queryID =
from student in students
where student.ID > 111
select student.LastName;
foreach (string str in queryID)
{
Console.WriteLine(str);
}
Vedere anche
Concetti
Espressioni query LINQ (Guida per programmatori C#)
Riferimenti
Metodi di estensione (Guida per programmatori C#)