Tipos de dados em C#
Os tipos de dados são fundamentais em C#, pois determinam quais valores podem ser armazenados numa variável e quais operações podem ser realizadas com ela. A escolha correta do tipo de dado é essencial para garantir eficiência, segurança e clareza no código.
Categorias de Tipos de Dados
Podemos dividir os tipos de dados em C# em duas categorias principais:
- Tipos de Valor: Armazenam diretamente os dados na memória. Exemplos:
int,float,bool,char,struct,enum. - Tipos de Referência: Armazenam uma referência (endereço) para os dados, que ficam na memória heap. Exemplos:
string,object, arrays, classes.
Tipos de valor
| Tipo | Descrição | Intervalo | Exemplo |
|---|---|---|---|
| int | Inteiro de 32 bits | -2.147.483.648 a 2.147.483.647 | int idade = 30; |
| long | Inteiro de 64 bits | –9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | long populacao = 8000000000; |
| short | Inteiro de 16 bits | -32.768 a 32.767 | short ano = 2025; |
| byte | Inteiro sem sinal de 8 bits | 0 a 255 | byte nivel = 100; |
| float | Ponto flutuante precisão simples (32 bits) | ±1.5 × 10⁻⁴⁵ a ±3.4 × 10³⁸ | float preco = 9.99f; |
| double | Ponto flutuante precisão dupla (64 bits) | ±5.0 × 10⁻³²⁴ a ±1.7 × 10³⁰⁸ | double media = 7.5; |
| decimal | Alta precisão para valores monetários | ±1.0 × 10⁻²⁸ a ±7.9 × 10²⁸ | decimal saldo = 1000.50m; |
| char | Caractere Unicode (16 bits) | Qualquer caractere Unicode | char letra = 'A'; |
| bool | Valor lógico | true ou false | bool ativo = true; |
Tipos de Referência
| Tipo | Descrição | Exemplo |
|---|---|---|
| string | Sequência de caracteres | string nome = "Maria"; |
| object | Tipo base de todos os tipos | object qualquer = 123; |
| arrays | Coleção de elementos do mesmo tipo | int[] numeros = {1, 2, 3}; |
| classes | Tipos definidos pelo utilizador | MinhaClasse obj = new MinhaClasse(); |
Tipos Personalizados
Pode criar seus próprios tipos usando:
struct(estrutura de valor)class(classe de referência)enum(enumerador)interface(contrato de métodos)record(tipo de referência imutável).
Inferência de Tipos
O C# permite deduzir o tipo de uma variável com a palavra-chave var:
var idade = 25; // O compilador entende que é int
var nome = "João"; // O compilador entende que é string
A inferência só funciona quando o compilador consegue determinar o tipo a partir do valor atribuído.
Conversão de Tipos
- Conversão Implícita: Quando não há risco de perda de dados.csharp
int x = 10; double y = x; // Conversão implícita de int para double - Conversão Explícita (cast): Necessária quando pode haver perda de dados.csharp
double a = 9.8; int b = (int)a; // Conversão explícita de double para int - Conversão entre tipos incompatíveis (ex:
stringparaint) requer métodos comoint.Parse()ouConvert.ToInt32()6.
Dicas Práticas
- Sempre escolha o tipo mais adequado ao valor que será armazenado para evitar desperdício de memória e erros de execução.
- Para saber o tipo de uma variável em tempo de execução, use
variavel.GetType(). - Tipos de valor são copiados ao serem atribuídos a outra variável; tipos de referência compartilham o mesmo endereço de memória.
Exemplo Prático
int idade = 25;
double salario = 3500.50;
char inicial = 'J';
bool empregado = true;
string nome = "João Silva";
