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.