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:
string
paraint
) 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";