Bases da linguagem

Tipos de dados

Atenção

Em C#, tudo é objeto, mesmo um byte.

Tipos primitivos value types

Variáveis de tipo de valor (value type) contém a instância do tipo. Por padrão, ao ser atribuído, passado como argumento para um método, ou retornando como resultado de um método, os valores são copiados.

Números inteiros

Tipo Range Tamanho (bits) .Net type
sbyte -128 a 127 8 System.SByte
byte 0 a 255 8 System.Byte
short -32768 a 32767 16 System.Int16
ushort 0 a 65535 16 System.UInt16
int -2,147,483,648 a 2,147,483,647 32 System.Int32
uint 0 a 4,294,967,295 32 System.UInt32
long -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 64 System.Int64
ulong 0 a 18,446,744,073,709,551,615 64 System.UInt64
nint Depende da plataforma (computado em runtime) 32/64 System.IntPtr
nuint Depende da plataforma (computado em runtime) 32/64 System.UIntPtr

Números de ponto flutuante

Tipo Range aproximado Precisão (dígitos) Tamanho (bytes) .Net type
float ±1.5E−45 a ±3.4E38 ~6-9 4 System.Single
double ±5.0E−324 a ±1.7E308 ~15-17 8 System.Double
decimal ±1.0E-28 a ±7.9228E28 28-29 16 System.Decimal

Boolean

Tipo Valores
bool true, false
bool? true, false, null

Char

Tipo Range Tamanho (bits) .Net type
char U+0000 a U+FFFF 16 System.Char

Enum

Enumeração, ou uma forma de criar um tipo com constantes definidas, associadas a um tipo inteiro.

enum Estacoes
{
    Primavera,
    Verao,
    Outono,
    Inverno
}
enum HTTPStatus: ushort
{
    OK = 200,
    Created = 201,
    Accepted = 202,
    BadRequest = 400,
    NotFound = 404
}

Struct

Struct (de structure) é um tipo de valor que encapsula dados de tipos variados e funcionalidade relacionada. Há uma aparente semelhança com as classes que serão vistas adiante.

public struct Coords
{
    public Coords(double x, double y)
    {
        X = x;
        Y = y;
    }

    public double X { get; }
    public double Y { get; }

    public override string ToString() => $"({X}, {Y})";
}