Duvida sobre o uso do tipo "var" em C#
Ola, sou um iniciante na programação e me deparei com uma duvida sobre C#.
Em C# e em outras linguagens é possivel ao invés de definirmos um tipo especifico para uma variável (int,double..) colocarmos ela do tipo "var", assim o próprio compilador fará a tipagem de acordo com o dado atribuído.
Eu gostaria de saber é, por que usar o "var"? Por que deixar o compilador fazer a tipagem se eu, o programador, posso muito bem especificar o tipo de dado? Me parece desnecessário a existência do "var". Nunca encontrei um caso que precisei usa-lo.
Olá AlexsOliver, quando eu estava começando com C# eu também tinha essa dúvida.
A ideia do var é facilitar a vida do desenvolvedor, para que ele não fique escrevendo o tipo de cada variável a todo momento.
Você irá perceber quando o var é importante em momento que temos classes com nomes gigantes, bem como:
AccountRepository
AdapterDataTableToAccountEntity
Esses são alguns casos bem simples que você irá começar encontrar depois de um tempo, e o uso do var depois passa a ser quase uma rotina.
Mas sugiro que não fique preso nisso por agora, é extremamente importante se aprofundar e ter noção da tipagem do C#
O código que você escreve é "transformado" em MSIL (Microsoft Intermediate Language).
Nesse processo o compilador pega seus "var" e transforma na tipagem correta.
Esse é um tópico bem avançado, tentei escrever em 1 frase. Saiba apenas que não há nenhuma perda de performance ou outro problema por usar "var" ou o tipo desejado.
Alex, eu também penso dessa forma. Também sou iniciante em C#. Mas pelo que pude entender é para facilitar quando estamos programando. Para não ficar declarando os tipos sempre. Eu particulamento prefiro declarar os tipos, assim não em atrapalho na leitura de meu codigo. Geralmente uso mais quando estou criando teste unitários.
O motivo é exatamente o que nosso colegas descreveram.
Pessoalmente e para facilitar a vida de outros desenvolvedores de minha equipe, costumo especificar o tipo da variável. Levo isto como boa prática, devido a experiências prévias.
Mas tudo funciona perfeitamente, recomendo que defina o tipo mesmo que seja de uma classe com nome exuberante.
Cara, eu uso mais VAR quando preciso utilizar LINQ, porque ele retorna classes ou dicionários que não estão "implementados" e só existem naquele contexto. (LINQ possibilita criar uma classe dinamicamente).
Exemplo: https://learn.microsoft.com/en-us/dotnet/csharp/linq/query-a-collection-of-object
Eu também costumo utilizar quando não sei o tipo de objeto que é retornado nem em que pacote ele está.
Acho que não vale apena importar um pacote de uma classe só para não usar o var.
Com a propriedade var, você pode adicionar tudo na variavel sem informar o tipo. Mas tome cuidade, pois devido ao mal uso, gera diversos erros.