English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Variabile implicita (var) in C#

In C#, le variabili devono essere dichiarate con un tipo di dati. Queste si chiamano variabili di tipo esplicito.

int i = 100; // variabile esplicita

C# 3.0 ha introdotto la parola chiave var per dichiarare variabili a livello di metodo senza specificare esplicitamente il tipo di dati.                    

var j = 100; // variabile locale di tipo implicito

Il compilatore dedurrà il tipo della variabile dalla parte destra dell'operatore = dell'espressione. Sopra, var verrà compilato come int.

Di seguito, il tipo viene dedotto dall'espressione.

int i = 10;
var j = i + 1; // compilato come int

var può essere utilizzato per dichiarare qualsiasi tipo di dati built-in, tipo utente definito o variabile di tipo anonimo. Ecco un esempio che mostra come il compilatore C# deduce il tipo in base a questo valore:        

static void Main(string[] args)
{
    var i = 10;
    Console.WriteLine("Il tipo di i è {0}", i.GetType());
    var str = "Hello World!!";
    Console.WriteLine("Il tipo di str è {0}", str.GetType());
    var dbl = 100.50d;
    Console.WriteLine("Il tipo di dbl è {0}", dbl.GetType());
    var isValid = true;
    Console.WriteLine("Il tipo di isValid è {0}", isValid.GetType());
    var ano = new { name = "Steve" };
    Console.WriteLine("Il tipo di ano è {0}", ano.GetType());
    var arr = new[] { 1, 10, 20, 30 };
    Console.WriteLine("Il tipo di arr è {0}", arr.GetType());
    var file = new FileInfo("MyFile");
    Console.WriteLine("Il tipo del file è {0}", file.GetType());
}

Le variabili di tipo implicito devono essere inizializzate durante la dichiarazione; altrimenti, il compilatore C# genererà un errore: il variabile di tipo implicito deve essere inizializzato.

var i; // errore durante la compilazione: il variabile di tipo implicito deve essere inizializzata
i = 100;

var non può essere utilizzato per dichiarare più volte una variabile in una singola istruzione.

var i = 100, j = 200, k = 300; // errore: non è possibile dichiarare variabili var in una singola istruzione//i = 100; anche il seguente contenuto è valido 
var j = 200; 
var k = 300;

var non può essere utilizzato come parametro di funzione.

void Display(var param) // errore durante la compilazione
{
    Console.Write(param);
}

var può essere utilizzato sia nei cicli for che foreach.

for(var i = 0; i < 10; i++)
{        Console.WriteLine(i);
}

var può essere utilizzato insieme alle query LINQ.

// Collezione di stringhe
IList<string> stringList = new List<string>() { 
    "Tutorial C#",
    "Tutorial VB.NET",
    "Impara C++",
    "Tutorial MVC",
    "Java" 
};
// Sintassi di query LINQ
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;