Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile usare variabili locali tipizzate in modo implicito ogni volta che si vuole che il compilatore determini il tipo di una variabile locale. È necessario usare variabili locali tipizzate in modo implicito per archiviare tipi anonimi, che vengono spesso usati nelle espressioni di query. Negli esempi seguenti vengono illustrati sia gli usi facoltativi che obbligatori delle variabili locali tipizzate in modo implicito nelle query.
Le variabili locali tipizzate in modo implicito vengono dichiarate usando la parola chiave contestuale var. Per altre informazioni, vedere variabili locali tipizzate in modo implicito e matrici tipizzate in modo implicito.
Esempi
L'esempio seguente illustra uno scenario comune in cui è necessaria la parola chiave var: un'espressione di query che produce una sequenza di tipi anonimi. In questo scenario, sia la variabile di query che la variabile di iterazione nell'istruzione foreach devono essere digitate in modo implicito usando var perché non si ha accesso a un nome di tipo per il tipo anonimo. Per altre informazioni sui tipi anonimi, vedere tipi anonimi.
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);
}
}
Nell'esempio seguente viene usata la parola chiave var in una situazione simile, ma in cui l'uso di var è facoltativo. Poiché student.LastName è una stringa, l'esecuzione della query restituisce una sequenza di stringhe. Di conseguenza, il tipo di queryId può essere dichiarato come System.Collections.Generic.IEnumerable<string> anziché come var. La parola chiave var viene usata per praticità. Nell'esempio la variabile di iterazione nell'istruzione foreach viene digitata in modo esplicito come stringa, ma potrebbe essere invece dichiarata usando var. Poiché il tipo della variabile di iterazione non è un tipo anonimo, l'uso di var è un'opzione, non un requisito. Tenere presente che var non è un tipo, ma un'istruzione al compilatore per dedurre e assegnare il tipo.
// 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}");
}