This article has been localized into Italian by the community.
Variabili locali tipizzate in modo implicito (la parola chiave var)
Dalla versione 3.o di C#, si può usare la parola chiave var nella parte sinistra della dichiarazione di una variabile al posto della dichiarazione esplicita del tipo della variabile. Questo è possibile solo all'interno di un metodo, non a livello di classe, dove si deve sempre specificare il tipo. Vediamo cosa appare quando si usa la parola chiave var:
int age = 42; // Explicitly typed variable
var name = "John Doe"; // Implicitly typed variable
Due variabili, una dichiarata con il tipo int, mentre l'altra è dichiarata con la parola chiave var invece di string. Da notare che viene assegnato un valore in entrambi i casi, perché, mentre questo non è richiesto dichiarando il tipo, È richiesto usando la parola chiave var. Il motivo è che il compilatore C# dedurrà il tipo dalla parte destra della dichiarazione. Guarderà semplicemente cosa si sta cercando di assegnare durante la compilazione e modificherà la parola chiave var nel tipo appropriato.
Questo significa inoltre che non c'è un costo aggiuntivo usando la parola chiave var. Durante l'esecuzione è tanto veloce quanto una variabile dichiarata esplicitamente, perché questo è, essenzialmente, mentre il framework .NET esegue il codice.
Il nostro primo esempio è banale. Non si risparmia molto tempo scrivendo "var" al posto di "string". A volte però dichiareremo tipi molto più complessi, sia come nuova variabile che come risultato locale di una funzione (dell'utente o del framework). È possibile risparmiare un bel po' di caratteri in un esempio come questo:
Dictionary<int, List<string>> dict1 = new Dictionary<int, List<string>>();
var dict2 = new Dictionary<int, List<string>>();
Il risultato è esattamente lo stesso, ma si risparmiano certamente alcuni caratteri nell'ultimo esempio. Inoltre, siccome specifichiamo il tipo nella parte destra in entrambi i casi, non c'è praticamente peggioramento nella leggibilità del codice, usando la parola chiave var in un esempio simile.
Si può anche usare la parola chiave var nella dichiarazione di una variabile locale come risultato di una chiamata ad un metodo:
var s = DateTime.Now.ToString();
Di nuovo, è più rapido ed è ancora piuttosto chiaro cosa succede e di quale tipo sarà la variabile (una stringa). Non è detto che lo sia in un caso come questo:
var myVar = SomeMethodWithANameWhichDoesntIndicateTheReturnType();
In una situazione come questa, non è affatto chiaro cosa conterrà la variabile e si rischia di sacrificare la leggibilità del codice. Qui si potrebbe valutare di usare una variabile tipizzata esplicitamente.
La parola chiave var & i Tipi Anonimi
Finora, gli esempi che abbiamo visto con la parola chiave var sono nella sezione "sintassi addolcita". È bello averla e più veloce da digitare, ma non è un vero requisito. Ad ogni modo, quando si lavora con i tipi anonimi (trattati estesamente più avanti), ha senso dichiarare gli oggetti con la parola chiave var:
var myObj = new
{
Name = "John Doe",
Age = 42
};
Console.WriteLine(myObj.Name);
In questo caso, si ha davvero bisogno della parola chiave var per poter accedere successivamente ai campi del tipo anonimo, come illustrato in questo esempio.
Riepilogo
La parola chiave var permette di dichiarare una variabile locale (dentro un metodo o un ciclo) senza indicare esplicitamente il tipo. Invece, il compilatore C# deduce il tipo dalla parte destra della dichiarazione. Questo può essere davvero utile in parecchie situazioni, ma potrebbe rendere il codice un po' meno leggibile. La si può usare oppure continuare a dichiarare il tipo della variabile, in base alle proprie preferenze, ma è necessaria con i tipi anonimi, come già spiegato.