Você está na página 1de 4

Tipo de dado Descrição Tamanho (bits) Alcance (valores)

Byte Numérico inteiro sem sinal 8 0 a 255

Sbytel Numérico inteiro com sinadotnetrun 8 -128 a 127

Ushort Numérico inteiro sem sinal 16 0 a 65.535

Short Numérico inteiro com sinal 16 - 32.768 a 32.767

Int Numérico inteiro com sinal 32 -2.147.483.648 a 2.147.483.647

Uint Numérico inteiro sem sinal 32 0 a 4294967295

Long Numérico inteiro com sinal 64 -9.223.372.036.854.775.808 a


9.223.372.036.854.775.807
Ulong Numérico inteiro sem sinal 64 0 a 18.446.744.073.709.551.615

Float Numérico decimal  com precisão 32 3,402823e38 a 3,402823e38


simples
Double Numérico decimal  com precisão dupla 64 -1,79769313486232e308 a
1,79769313486232e308
Decimal Numérico decimal  com precisão de 29 128 (+ or -)1,0 x 10e-28 a 7,9 x 10e28
dígitos
Char Caractere 16  1 caractere

Bool Tipo lógico 8 True or False

Object Tipo base para todos os demais tipos  

String Sequência de caracteres  

DateTime Representa data ou hora  0:00:00 am 1/1/01 a 11:59:59 pm


12/31/9999

Tipos de variáveis
https://docs.microsoft.com/pt-br/dotnet/csharp/tour-of-csharp/types-and-variables
•24/04/2020

Há dois tipos em C#: tipos de referência e tipos de valor. As variáveis de tipos de valor contêm diretamente seus
dados enquanto variáveis de tipos de referência armazenam referências a seus dados, o último sendo conhecido
como objetos. Com os tipos de referência, é possível que duas variáveis referenciem o mesmo objeto e, assim,
possíveis para operações em uma variável afetem o objeto referenciado pela outra variável.Com os tipos de valor, as
variáveis têm sua própria cópia dos dados, e não é possível que as operações em um afetem a outra (exceto ref para
out variáveis de parâmetro e).
Os tipos de valor do C# são divididos em tipos simples, tipos de enumeração, tipos de structe tipos de valor anulável.
Os tipos de referência do C# são divididos em tipos de classe, tipos de interface, tipos de matrize tipos delegados.
A seguinte estrutura de tópicos fornece uma visão geral do sistema de tipos do C#.
•Tipos de valor
•Tipos simples
•Integral com sinal: sbyte, short, int,long
•Integral sem sinal: byte, ushort, uint,ulong
•Caracteres Unicode: char
•Ponto flutuante binário de IEEE: float, double
•Ponto flutuante decimal de alta precisão: decimal
•Booliano: bool
•Tipos de enumeração
•Tipos definidos pelo usuário do formulário enum E {...}
•Tipos struct
•Tipos definidos pelo usuário do formulário struct S {...}
•Tipos de valor anulável
•Extensões de todos os outros tipos de valor com um valor null
•Tipos de valor de tupla
•Tipos definidos pelo usuário do formulário (T1, T2, ...)
•Tipos de referência
•Tipos de aula
•Classe base definitiva de todos os outros tipos: object
•Cadeia de caracteres Unicode: string
•Tipos definidos pelo usuário do formulário class C {...}
•Tipos de interface
•Tipos definidos pelo usuário do formulário interface I {...}
•Tipos de matriz
•Unidimensional e multidimensional, por exemplo, int[] e int[,]
•Tipos delegados
•Tipos definidos pelo usuário do formulário delegate int D(...)
Para obter mais informações sobre tipos numéricos, veja a tabela Tipos integrais e Tipos de ponto flutuante.
O bool true tipo do C# é usado para representar valores Boolianos — valores que são falseou.
O processamento de cadeia de caracteres e caracteres em C# usa codificação Unicode. O tipo char representa uma
unidade de código UTF-16 e o tipo string representa uma sequência de unidades de código UTF-16.
Os programas em C# usam declarações de tipos para criar novos tipos. Uma declaração de tipo especifica o nome e
os membros do novo tipo. Cinco das categorias de tipos do C# são definíveis pelo usuário: tipos de classe, tipos de
struct, tipos de interface, tipos de enumeração e tipos delegados.
Um tipo class define uma estrutura de dados que contém membros de dados (campos) e membros de função
(métodos, propriedades e outros). Os tipos de classe dão suporte à herança única e ao polimorfismo, mecanismos
nos quais as classes derivadas podem estender e especializar as classes base.
Um tipo struct é semelhante a um tipo de classe que representa uma estrutura com membros de dados e membros da
função. No entanto, ao contrário das classes, as structs são tipos de valor e normalmente não exigem alocação de
heap. Tipos de struct não dão suporte à herança especificada pelo usuário e todos os tipos de struct herdam
implicitamente do tipo object.
Um tipo interface define um contrato como um conjunto nomeado de membros da função pública. Um class ou struct que
implementa um interface deve fornecer implementações dos membros da função da interface. Um interface pode herdar
de várias interfaces base e um class ou struct pode implementar várias interfaces.
Um tipo delegate representa referências aos métodos com uma lista de parâmetros e tipo de retorno
específicos. Delegados possibilitam o tratamento de métodos como entidades que podem ser atribuídos a variáveis e
passadas como parâmetros. Os delegados são análogos aos tipos de função fornecidos pelas linguagens
funcionais. Eles também são semelhantes ao conceito de ponteiros de função encontrados em algumas outras
linguagens. Diferentemente de ponteiros de função, os delegados são orientados a objeto e são de tipo seguro.
Os class delegate tipos struct, interface, e oferecem suporte a genéricos, no qual eles podem ser parametrizados com outros
tipos.
Um tipo enum é um tipo distinto com constantes nomeadas. Cada tipo enum tem um tipo subjacente, que deve ser um
dos oito tipos integrais. O conjunto de valores de um tipo enum é o mesmo que o conjunto de valores do tipo
subjacente.
O C# dá suporte a matrizes uni e multidimensionais de qualquer tipo. Ao contrário dos tipos listados acima, os tipos
de matriz não precisam ser declarados antes que possam ser usados. Em vez disso, os tipos de matriz são construídos
seguindo um nome de tipo entre colchetes. Por exemplo, int[] é uma matriz unidimensional de int, int[,] é uma matriz
bidimensional de int, e int[][] é uma matriz unidimensional da matriz unidimensional de int.
Os tipos de valor anulável também não precisam ser declarados antes que possam ser usados. Para cada tipo Tde
valor não anulável, há um tipo T?de valor anulável correspondente, que pode conter um valor adicional, null. Por
exemplo, int? é um tipo que pode conter qualquer número inteiro de 32 bits ou o valor null.
O sistema de tipos do C# é unificado, de modo que um valor de qualquer objecttipo pode ser tratado como um. Cada
tipo no C#, direta ou indiretamente, deriva do tipo de classe object, e object é a classe base definitiva de todos os
tipos. Os valores de tipos de referência são tratados como objetos simplesmente exibindo os valores como
tipo object. Os valores de tipos de valor são tratados como objetos, executando conversão boxing e operações de
conversão unboxing. No exemplo a seguir, um valor int é convertido em object e volta novamente ao int.

C#Copiar
using System;
class BoxingExample
{
static void Main()
{
int i = 123;
object o = i; // Boxing
int j = (int)o; // Unboxing
}
}
Quando um valor de um tipo de valor é atribuído a object uma referência, uma "caixa" é alocada para conter o
valor. Essa caixa é uma instância de um tipo de referência, e o valor é copiado para essa caixa. Por outro lado, quando
uma object referência é convertida em um tipo de valor, é feita uma verificação de object que a referência é uma caixa
do tipo de valor correto. Se a verificação for realizada com sucesso, o valor na caixa será copiado para o tipo de valor.
O sistema de tipos unificados do C# significa efetivamente que os object tipos de valor são tratados como referências
"sob demanda". Devido à unificação, as bibliotecas de uso geral que usam object o tipo podem ser usadas com todos
os tipos objectque derivam de, incluindo tipos de referência e tipos de valor.
Existem vários tipos de variáveis no C#, incluindo campos, elementos de matriz, variáveis locais e parâmetros. As
variáveis representam os locais de armazenamento e cada variável tem um tipo que determina quais valores podem
ser armazenados na variável, conforme mostrado abaixo.
•Tipo de valor não nulo
•Um valor de tipo exato
•Tipos de valor anulável
•Um valor null ou um valor do tipo exato
•objeto
•Uma referência null, uma referência a um objeto de qualquer tipo de referência ou uma referência a um valor
de qualquer tipo de valor demarcado
•Tipo de classe
•Uma referência null, uma referência a uma instância desse tipo de classe ou uma referência a uma instância
de uma classe derivada desse tipo de classe
•Tipo de interface
•Uma referência null, uma referência a uma instância de um tipo de classe que implementa esse tipo de
interface ou uma referência a um valor demarcado de um tipo de valor que implementa esse tipo de
interface
•Tipo de matriz
•Uma referência null, uma referência a uma instância desse tipo de matriz ou uma referência a uma instância
de um tipo de matriz compatível
•Tipo delegado
•Uma referência null ou uma referência a uma instância de um tipo de delegado compatível

Você também pode gostar