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

Variável implícita (var) do C#

No C#, as variáveis devem ser declaradas com tipos de dados. Essas são chamadas de variáveis de tipo explícito.

int i = 100;// Variável explícita

C#3.0 introduziu a palavra-chave var para declarar variáveis de nível de método sem especificar explicitamente o tipo de dados.                    

var j = 100; // Variável local de tipo implícito

O compilador deduzirá o tipo da expressão à direita do operador =. No exemplo acima, var será compilado como int.

A seguir, o tipo é deduzido da expressão.

int i = 10;
var j = i + 1; // compilado como int

var pode ser usado para declarar qualquer tipo de dados integrado, tipo de dados definido pelo usuário ou variável de tipo anônimo. O exemplo a seguir mostra como o compilador C# deduz o tipo com base neste valor:        

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

As variáveis de tipo implícito devem ser inicializadas no momento da declaração; caso contrário, o compilador C# emitirá o erro: a variável de tipo implícito deve ser inicializada.

var i; // erro de compilação: a variável de tipo implícito deve ser inicializada
i = 100;

Não é permitido declarar várias vezes uma variável em uma única instrução.

var i = 100, j = 200, k = 300; // erro: não é possível declarar variável var em uma única instrução//O seguinte conteúdo também é válido var i = 100; 
var j = 200; 
var k = 300;

var não pode ser usado como parâmetro de função.

void Display(var param) //erro de compilação
{
    Console.Write(param);
}

var pode ser usado em loops for e foreach.

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

var também pode ser usado com consultas LINQ.

// Conjunto de Strings
IList<string> stringList = new List<string>() { 
    "Tutoriais C#",
    "Tutoriais VB.NET",
    "Aprenda C"++",
    "Tutoriais MVC",
    "Java" 
};
// Sintaxe de Consulta LINQ
var result = from s in stringList
            where s.Contains("Tutorials") 
            select s;