Tipos, variáveis e var
ResumoC# é fortemente tipado. Cada variável tem um tipo conhecido em tempo de compilação.
varnão é "sem tipo": é inferência — o compilador deduz o tipo pelo valor atribuído.
1. Objetivos de Aprendizagem#
- Declarar variáveis com tipos explícitos e com
var. - Conhecer os tipos primitivos mais usados.
- Entender conversões implícitas e explícitas (cast).
2. Pré-requisitos#
- Projeto de console criado (tópico 1.3).
3. Conceito#
C# resolve tipos em tempo de compilação (tipagem estática). Isso pega erros cedo e habilita autocompletar. Os tipos mais usados no dia a dia:
| Tipo | Uso |
|---|---|
int, long | inteiros |
decimal, double | números com casas decimais (decimal para dinheiro) |
bool | verdadeiro/falso |
string | texto |
char | um caractere |
DateTime, DateOnly | datas |
Guid | identificadores únicos |
var pede ao compilador para inferir o tipo pelo lado direito. O tipo continua fixo e forte — só a digitação é mais curta. O porquê: reduzir ruído quando o tipo já é óbvio pelo valor.
3.1. Interpolação de string e formato#
Você verá $"..." em quase todos os exemplos deste curso — é a interpolação de string. O $ antes das aspas liga a interpolação; dentro, {expressão} é avaliado e inserido no texto:
var nome = "Mouse";
var preco = 89.90m;
var linha = $"{nome} custa {preco}"; // "Mouse custa 89.90"
Depois de : dentro das chaves vem um especificador de formato — como o valor é exibido:
| Formato | Efeito | Exemplo |
|---|---|---|
:C | moeda | {preco:C} → R$ 89,90 |
:N2 | número com 2 casas | {preco:N2} → 89,90 |
:P0 | porcentagem | {0.1:P0} → 10% |
:yyyy-MM-dd | data | {data:yyyy-MM-dd} |
Atenção
:Ce:Ndependem da cultura do processo (CultureInfo). O mesmo{preco:C}mostraR$ 89,90empt-BRe$89.90emen-US. Em servidor, a cultura pode não ser a que você espera — para valores estáveis (logs, arquivos, APIs), formate comCultureInfo.InvariantCultureem vez de confiar no padrão.
4. Mão na Massa#
4.1. Setup#
dotnet new console -n Catalog.Tipos
cd Catalog.Tipos
4.2. Implementação Passo a Passo#
- Tipos explícitos vs
var:
int quantidade = 10;
decimal preco = 19.90m; // sufixo m = decimal
string nome = "Teclado";
bool ativo = true;
var total = quantidade * preco; // inferido como decimal
var rotulo = $"{nome}: {total:C}"; // string interpolada
- Conversões:
int i = 5;
double d = i; // implícita (não perde dados)
int back = (int)d; // explícita (cast, pode truncar)
string texto = "42";
int parsed = int.Parse(texto); // lança se inválido
bool ok = int.TryParse("x", out int n); // seguro: ok=false, n=0
4.3. Executando#
dotnet run
5. Exemplo Completo#
var nome = "Mouse";
var preco = 89.90m;
var emEstoque = true;
Console.WriteLine($"{nome} custa {preco:C} — disponível: {emEstoque}");
6. Boas Práticas e Armadilhas#
| Faça | Evite |
|---|---|
Usar decimal para valores monetários | Usar double para dinheiro (erros de arredondamento) |
Usar TryParse para entradas não confiáveis | Parse direto em dados do usuário (exceção) |
Usar var quando o tipo é óbvio | var quando prejudica a leitura |
Atenção
varnão é ovardo JavaScript. O tipo é fixo em compilação; você não pode reatribuir outro tipo depois.
7. Segurança e Produção#
- Prefira
TryParseao processar dados de requisições — evita exceções não tratadas por entrada malformada.
8. Exercícios#
- Fácil: declare variáveis de cada tipo primitivo.
- Médio: converta uma
stringemintcomTryParsee trate a falha. - Desafio: mostre com um exemplo por que
0.1 + 0.2difere entredoubleedecimal.
9. Resumo#
C# é fortemente tipado; var é inferência, não ausência de tipo. Use decimal para dinheiro e TryParse para entradas incertas.
10. Próximos Passos#
A seguir, operadores e controle de fluxo.
11. Referências#
- Microsoft Learn — Tipos internos do C#
- Microsoft Learn — Variáveis locais tipadas implicitamente (var)
- Microsoft Learn — Conversões de tipo