Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Tipos numericos
  2. Tipos derivados
  3. Tipo String
  4. Tipo Enum
  5. Tipo Vetor/Matriz
  6. Tipo Char
  7. Tipo boolean
  8. Outros tipos
  9. Classes .NET mais comuns
  10. Diferença entre decimal, float e double
  11. Renomeado tipos de dados

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.

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.

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*/} 
  1. 05/08/2025 - revisão 2 - Correções: pontuais, sintaxes, links 'Objetivos' e tamanho tipo 'char'
  2. 15/10/2024 - revisão 1 - Correções e ajustes pontuais
  3. 05/03/2024 - versão inicial