Tag Archives: TIPOS

I Love C# – Var

Chega de teoria! #3 – Tipos Implícitos

Continuando a saga para conhecer as features do C#3 projetadas para nos ajudar na codificação de nossos aplicativos. Vamos lá:

Hoje o C#3 apresenta o segundo recurso, o Var. Este carinha nos permite uma forma implícita/indireta de definir tipos de dados ou tipos de variáveis.

A Sintaxe

int x = 4;
var x = 4;

Aqui temos duas declarações equivalentes.

Como era Antes

Até o C# 2.0, era preciso definir o tipo da variável na hora da criação:

static void Main(string[] args)
{
    string nome = "Aldo";
    int idade = 30;
    bool gostaDeDev = true;
}

Agora podemos escrever dessa forma:

static void Main(string[] args)
{
    var nome = "Xamarin";
    var idade = 4;
    var gostaDeDev = true;
}

Nome continua como string, idade como int e gostaDeDev como bool, só que não preciso definir isso, é definido automaticamente pelo tipo do valor que a variável recebe.

Em resumo, o C#3 permite que as variáveis declaradas no escopo do método podem possuir um tipo implícito var.

Como isso funciona?

var instrui o compilador para deduzir o tipo da variável da expressão no lado direito da instrução de inicialização. O tipo inferido pode ser:

  • Tipo interno
  • Tipo anônimo
  • Tipo definido pelo usuário
  • Tipo definido na classlibrary .NETFW

Declaração Explícita

int x = 4;

Aqui a variável x é definida de forma explicita/direta como do tipo int.

Note o dado no lado direito, o lado esquerdo define o tipo de dados pelo compilador durante a geração do código IL.

Declaração Implícita

var x = 4

Agora a variável x é definida com o var implicitamente ou indireta. Ou seja, como temos um dado do tipo inteiro, ela assume o tipo int.

O var não representa um variante, uma variável com tipagem fraca ou de vinculação tardia. Ela diz para o compilador definir e atribuir o tipo mais apropriado.

cs3_var

No var a definição é feita estaticamente e não em tempo de execução.

Então é isso treine bastante, e fiquei familiarizado com estes novos recursos.

Ok! Sobre as FEATURES do C#3.