« Voltar
em .net c#

Pra que declarar uma variável usando var?.

No C#, temos duas formas de declarar uma variável.

Assim:

int numero = 42;  

Ou assim:

var numero = 42;  

Mas qual a diferença?

A performance é melhor? Var é dinâmico?
Não e não.

A performance é a mesma.
Em tempo de compilação, o compilador infere qual é o tipo que você está usando. O código que ele gera se você usar o tipo da variável ou var é exatamente o mesmo.

Então pra que...?

Legibilidade

Imagine o seguinte código:

AlgumGenerico<ClasseEspecifica<DeAlgumTipoEspecifico>> algo = new  
AlgumGenerico<ClasseEspecifica<DeAlgumTipoEspecifico>>();  

Deu preguiça só de ler né?
Poderíamos trocar essa linha de código por essa:

var algo = new AlgumGenerico<ClasseEspecifica<DeAlgumTipoEspecifico>>();  

Ainda tá grande, mas já tá bem melhor né?

"Ah, mas legibilidade é frescura".

Por quanto tempo vive o software que você escreve?
Um ano? Cinco anos? Talvez décadas?
Pense nisso.

Imagine que outras pessoas irão dar manutenção no seu código. Imagine que você, daqui a um ano irá dar manutenção no seu código.
Quanto mais fácil de ler e entender, melhor certo?

E outra: depois que você pega o jeito, escrever código que máquinas entendam não é tão difícil. O verdadeiro desafio está em escrever código que pessoas entendam (:

Tipos anônimos

Quando criamos um objeto no C#, usamos a palavra new e o nome do tipo, certo?

new Tipo();  

E(quando não usamos var) guardamos isso dentro de uma variável do mesmo tipo:

Tipo t = new Tipo();  

Agora, e quando eu crio um tipo anônimo?
Eu uso a palavra new, mas como esse tipo não tem nome, não tenho como usar o nome dele pra instancia-lo. Ao invés disso, falo quais serão os valores que ele terá:

new { Valor1 = 1, Valor2 = 2 };  

Agora, como esse objeto não tem nome nem tipo definidos, como faço pra armazenar ele em uma variável?
Usando var.

var tipo = new { Valor1 = 1, Valor2 = 2 };  

Poderíamos também usar dynamic ou object que funcionaria.
Seria menos flexível, mas funcionaria.


Quer ganhar 15% de desconto pra gastar na Casa do Código e ainda ficar em dia com as minhas postagem e outras promoções e sorteios legais? Assina minha newsletter: http://gabsferreira.com/newsletter/ (:

Se quiser, curta minha página no Face também! O endereço é https://www.facebook.com/devgabsferreira

comments powered by Disqus