Objetivos
Tipos de dados primitivos
A linguagem C# possui os tipos de dados primitivos para armazenar números inteiros, racionais,
caracteres, cadeia de caracteres, vetores e matrizes e outros.
Alem dos tipos primitivos, o framework .Net possui também uma vasta lista de classes nativas que
nos ajudam no desenvolvimento de programas. Essas serão vistas em futuras atualizações.
O uso desses tipos de dados em variáveis e constantes serão visto em
C# Básico: Variáves e Constantes.
Os tipos de dados abaixo serão vistos de forma superficial. Alguns possuem seções específicas em que
estudamos um pouco mais afundo o tipo de dado.
A sinalização de inteiros foi visto em
Tutorial C: Sinalização,
sendo a leitura recomendada.
As conversões utilizando os dados vistos abaixo podem ser conferidas em
C# Básico: Conversão de Dados.
Tipos numéricos primitivos
Para manipular dados númericos, a linguagem C# fornece os tipos abaixo:
Tab. 1: Tipos inteiros
Tipo(Alias) |
Uso |
Exemplo |
Tipo .Net |
Seção |
int |
Inteiro 32-bits sinalizado |
10, -10 |
System.Int32 |
- |
uint |
Inteiro 32-bits não-sinalizado |
0, 10 |
System.UInt32 |
- |
byte |
Inteiros 8-bits não-sinalizado |
0...255 |
System.Byte |
- |
sbyte |
Inteiro 8-bits sinalizado |
-127,0,128 |
System.SByte |
- |
decimal |
Números decimais |
1.10 |
System.Decimal |
- |
float |
Numéros racionais |
1.99, -1.99 |
System.Single |
- |
double |
Números racionais |
1.99, -1.99 |
System.Double |
- |
long |
Inteiros 64-bits sinalizado |
- |
System.Int64 |
- |
ulong |
Inteiros 64-bits não-sinalizado |
- |
System.UInt64 |
- |
short |
Inteiros 16-bits sinalizado |
- |
System.Int16 |
- |
ushort |
Inteiros 16-bits não-sinalizado |
- |
System.Int16 |
- |
O tipo int é utilizado para armazenar números inteiros positivos e negativos. Possuem um tamanho
de 4 bytes em memória e armazena dados no intervalo entre -2.147.483.648 e 2.147.483.647.
Sintaxe
int
Exemplo
0,1,10,-10
O tipo int também aceita que um valor hexadecimal ou octal sejam atribuídos.
Utiliza-se os prefixos 0x para hexadecimal e 0 para indicar octal.
Exemplo
016, 0xff
O tipo uint é utilizado para armazenar números inteiros positivos apenas. Possuem um tamanho
de 4 bytes em memória e armazena dados no intervalo entre 0 e 4.294.967.295.
Sintaxe
uint
Exemplo
0,1,10,-10
O tipo uint também aceita que um valor hexadecimal ou octal sejam atribuídos.
Utiliza-se os prefixos 0x para hexadecimal e 0 para indicar octal.
Exemplo
016, 0xff
O tipo double é utilizado para armazenar números(Ponto flutuante) positivos e negativos de com casas decimais.
Possuem um tamanho de 8 bytes em memória e armazena dados entre 1.7E-308 até 1.7E+308.
Sintaxe
double
Exemplo
12.123456
O tipo float é semelhante ao double, armazena números positivos e negativos de com casas decimais.
Possuem um tamanho de 4 bytes em memória e armazenam dados entre 1.175494e-38 e 3.402823e+38.
Sintaxe
float
Exemplo
2.500000
Esse tipo de dados byte armazena valores numéricos entre 0 e 255. Semelhante ao tipo
unsigned char em C/C++.
Sintaxe
byte
Exemplo
255
O tipo sbyte mesmo que byte é semelhante ao byte, mas o valor armazenado utiliza sinalização tendo
seu intervalo entre -128 a 127. Seu tamanho é de 8-bits e semelhante ao tipo char em C/C++.
Sintaxe
sbyte
Exemplo
-1,1,0
O tipo de dado short armazena valores numéricos inteiros sinalizados. Seu tamanho é de 2 bytes e
seu intervalo de dados que abrangem valores entre -32,768 até 32,767.
Semelhante a short int em C/C++.
Sintaxe
short
Exemplo
-1,1,0,0xffff
O tipo de dado ushort é a versão não sinalizada de short. Seu tamanho é de 2 bytes e seu
intervalo de dados que abrangem valores de 0 to 65,535. Semelhante a unsigned short em C/C++.
Sintaxe
short
Exemplo
1,0,0xffff
O tipo long é a versão 64-bits do tipo int possui o tamanho de 8 bytes, tendo seu intervalo
de dados que abrange valores entre -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807.
Semelhante ao tipo long em C/C++.
Sintaxe
long
Exemplo
-1,0,-1,0xffffffffffffffff
O tipo ulong é a versão não sinalizada de long possui o tamanho de 8 bytes, tendo seu intervalo
de dados que abrange valores entre 0 até 18,446,744,073,709,551,615. Semelhante ao tipo unsigned
long em C.
Sintaxe
ulong
Exemplo
-1,0,-1,0xffffffffffffffff
O tipo decimal armazena informações numéricas sinalizadas que usam casas decimais. Seu tamanho
é de 16 bytes. O sufixo M ou m é utilizado para informar que o valor é um decimal.
Sintaxe
decimal
Exemplo
10.99M
-1.99M
Os tipos de dados derivados, são tipos de dados compostos em outros tipos de dados. A linguagem C#
fornece os seguintes tipos de dados:
A linguagem C# não possui suporte ao tipos de dado union presente nas linguagens C/C++. Para simular
esse tipo de dado é necessário utilizar struct e annotations.
Tab. 2: Tipos derivados
Tipo |
Uso |
Exemplo |
Seção |
Vetor(Array) |
variáveis |
1,2,3,... |
Visitar |
Matriz(Array 2d) |
matrizes |
- |
Visitar |
String |
Textos |
"um texto" |
Visitar |
Enum |
Constantes |
0,1,2,3 |
Visitar |
Struct |
Estruturas de dados |
{ 1,"Teste",true} |
Visitar |
Para a linguagem C#, o tipo de dado String é uma cadeia de caracteres justapostos como pode
ser vista uma abstração abaixo.
0 |
1 |
2 |
3 |
4 |
5 |
's' |
't' |
'r' |
'i' |
'n' |
'g' |
Sintaxe
String
string
Exemplo: conteúdo
"uma string em C#"
Mais informações e operações básicas sobre o tipo de dado string pode ser visto com mais detalhes
em sua seção C# Derivados: Strings.
O tipo enum é utilizado para criar constantes em cada membro de sua composição possui
um valor inteiro associado a cada membro. Semelhante ao tipo enum de C/C++.
Exemplo
enum nome_enum
{
nome_membro1,
nome_membro2,
nome_membroN;
}
Mais informações e operações básicas sobre o tipo de dado string pode ser visto com mais
detalhes em sua seção C# Derivados: Enum.
Na linguagem C#, assim como em outras linguagens, podemos declarar vetores(estático) a partir dos
tipos de dados primitivos e também tipos complexos.
Podemos enxergar um vetor como um local para armazenar várias variáveis de forma sequencial
como mostrado na abstração abaixo:
Tab. 1: Vetor de int
0 |
1 |
2 |
3 |
4 |
5 |
(...) |
1 |
10 |
-100 |
0 |
2 |
- |
- |
O acesso e atribuição/atualização de um elemento a uma posição dentro do vetor é feita
utilizando seu índice ou posição entre [ e ]. Baseado no exemplos acima temos:
Exemplo 9
[0] : 1
[1] : 10
[2] : -100
[3] : 0
[4] : 2
Comando de repetição como for, while, do-while e foreach são
utilizados para percorrer o conteúdo de um vetor.
Esses comandos podem ser vistos em C#: Comandos
Mais informações e operações básicas sobre o tipo de dado vetor pode ser visto com em sua seção
C#: Vetor.
Uma matriz(estática) é um vetor de duas dimensões. Sendo assim, seus elementos são armazenados de
forma sequencial, porém o acesso a esses elementos é feito utilizando suas linhas e colunas.
Uma matriz com as dimensões 3x3 pode ser representada como na abstração abaixo:
Tab. 2: Matriz de int
L/C |
0 |
1 |
2 |
0 |
10 |
20 |
30 |
1 |
40 |
50 |
60 |
2 |
70 |
80 |
90 |
O acesso e atribuição/atualização de um elemento a uma determinada linha e coluna dentro de
uma matriz é feito utilizando suas linhas e colunas [ e ]. Baseado no exemplos acima temos:
Exemplo
[0][0] : 10
[0][1] : 20
[0][2] : 30
Comandos de repetição como for, while e do-while são utilizados para
percorrer o conteúdo de uma matriz. Esses comandos podem ser vistos em
C#: Comandos
Mais informações e operações básicas sobre o tipo de dado matriz pode ser visto com mais
detalhes em sua seção C#: Matriz.
O tipo de dado Struct é um tipo de estrutura composta por membros de diferentes tipos de dados.
Em C#, diferente de C/C++, pode possuir construtores, métodos e pode herdar interfaces.
Sintaxe
struct
Exemplo
struct nome_struct
{
tipo_dado1 nome_membro1;
tipo_dado2 nome_membro2;
tipo_dado3 nome_membro3;
}
Mais informações e operações básicas sobre o tipo de dado struct pode ser visto com mais
detalhes em sua seção C#: Struct.
boolean
O tipo boolean trabalha com valores true e false. Assim como em outras
linguagens, esse tipo de dado está disponível em C#.
Sintaxe
boolean
Exemplo
true, false
O tipo char é utilizado para armazenar caracteres e possuem um tamanho de 1 ou mais bytes
dependendo da codificação de caracters usada.
Sintaxe
char
Exemplo
'a','Z'
Nesta parte serão vistos os tipos de dados ponteiro e reference além das palavras
reservadas null, void e outros. Mais tipos serão adicionados em futuras atualizações.
Objeto são um tipo de dado complexo definido pelo usuário em que contém membros como atributos
e métodos.
Exemplo
public class MinhaClasse
{
public int codigo
public void metodo(){}
}
O framework .NET fornece inúmeras classes prontas para que sejam utilizadas com C# para facilitar
o desenvolvimento de aplicação.
O assunto objeto pode ser conferido em
C# P.O.O: Classe e Objetos.
A linguagem C# possui um a palavra reservada null para representar o tipo de dado nulo.
Utilizado nos tipos de dados de referência para informar que o recurso não é mais utilizado
tendo seus recurso de memória liberados.
Sintaxe
nome_objeto = null;
Exemplo
Object? instancia_objeto;
instancia_objeto = null;
O tipo de dado nullable pode ser visto com mais detalhes em sua seção
Tipo nullable.
O pseudo-tipo void, em parte, é um tipo de dado, e em outra parte não. Podemos utilizar
void para informar que métodos não possuem retorno, mas não podemos utilizar void
para declarar variáveis.
Sintaxe
public void nome_metodo(parametros){/*omitido*/}
Histórico de atualizações
- 05/08/2025 - revisão 2 - Correções: pontuais, sintaxes, links 'Objetivos' e tamanho tipo 'char'
- 15/10/2024 - revisão 1 - Correções e ajustes pontuais
- 05/03/2024 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.