C # - Tipos de dados
As variáveis em C # são categorizadas nos seguintes tipos -
- Tipos de valor
- Tipos de referência
- Tipos de ponteiro
Tipo de Valor
Variáveis de tipo de valor podem ser atribuídas a um valor diretamente. Eles são derivados da classe System.ValueType.
Os tipos de valor contêm dados diretamente. Alguns exemplos sãoint, char, and float, que armazena números, alfabetos e números de ponto flutuante, respectivamente. Quando você declara umint tipo, o sistema aloca memória para armazenar o valor.
A tabela a seguir lista os tipos de valor disponíveis em C # 2010 -
Tipo | Representa | Alcance | Valor padrão |
---|---|---|---|
bool | Valor booleano | Verdadeiro ou falso | Falso |
byte | Inteiro sem sinal de 8 bits | 0 a 255 | 0 |
Caracteres | Caractere Unicode de 16 bits | U +0000 a U + ffff | '\ 0' |
decimal | Valores decimais precisos de 128 bits com 28-29 dígitos significativos | (-7,9 x 10 28 a 7,9 x 10 28 ) / 10 0 a 28 | 0,0M |
Duplo | Tipo de ponto flutuante de dupla precisão de 64 bits | (+/-) 5,0 x 10 -324 a (+/-) 1,7 x 10 308 | 0,0D |
flutuador | Tipo de ponto flutuante de precisão única de 32 bits | -3,4 x 10 38 a + 3,4 x 10 38 | 0,0F |
int | Tipo inteiro assinado de 32 bits | -2.147.483.648 a 2.147.483.647 | 0 |
longo | Tipo inteiro assinado de 64 bits | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 | 0L |
sbyte | Tipo inteiro assinado de 8 bits | -128 a 127 | 0 |
curto | Tipo inteiro assinado de 16 bits | -32.768 a 32.767 | 0 |
uint | Tipo inteiro não assinado de 32 bits | 0 a 4.294.967.295 | 0 |
Ulong | Tipo inteiro não assinado de 64 bits | 0 a 18.446.744.073.709.551.615 | 0 |
ushort | Tipo inteiro não assinado de 16 bits | 0 a 65.535 | 0 |
Para obter o tamanho exato de um tipo ou variável em uma plataforma específica, você pode usar o sizeofmétodo. A expressão sizeof (tipo) fornece o tamanho do armazenamento do objeto ou tipo em bytes. A seguir está um exemplo para obter o tamanho do tipo int em qualquer máquina -
using System;
namespace DataTypeApplication {
class Program {
static void Main(string[] args) {
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
Size of int: 4
Tipo de referência
Os tipos de referência não contêm os dados reais armazenados em uma variável, mas contêm uma referência às variáveis.
Em outras palavras, eles se referem a um local de memória. Usando várias variáveis, os tipos de referência podem se referir a um local de memória. Se os dados na localização da memória forem alterados por uma das variáveis, a outra variável refletirá automaticamente essa alteração no valor. Exemplo debuilt-in os tipos de referência são: object, dynamic, e string.
Tipo de objeto
o Object Typeé a classe base definitiva para todos os tipos de dados no C # Common Type System (CTS). Object é um alias para a classe System.Object. Os tipos de objetos podem ser atribuídos a valores de quaisquer outros tipos, tipos de valor, tipos de referência, tipos predefinidos ou definidos pelo usuário. Porém, antes de atribuir valores, ele precisa de conversão de tipo.
Quando um tipo de valor é convertido em tipo de objeto, ele é chamado boxing e por outro lado, quando um tipo de objeto é convertido em um tipo de valor, ele é chamado unboxing.
object obj;
obj = 100; // this is boxing
Tipo Dinâmico
Você pode armazenar qualquer tipo de valor na variável de tipo de dados dinâmico. A verificação de tipo para esses tipos de variáveis ocorre em tempo de execução.
A sintaxe para declarar um tipo dinâmico é -
dynamic <variable_name> = value;
Por exemplo,
dynamic d = 20;
Os tipos dinâmicos são semelhantes aos tipos de objeto, exceto que a verificação de tipo para variáveis de tipo de objeto ocorre em tempo de compilação, enquanto que para as variáveis de tipo dinâmico ocorre em tempo de execução.
Tipo de corda
o String Typepermite que você atribua quaisquer valores de string a uma variável. O tipo de string é um alias para a classe System.String. É derivado do tipo de objeto. O valor para um tipo de string pode ser atribuído usando literais de string em duas formas: aspas e @quoted.
Por exemplo,
String str = "Tutorials Point";
Um literal de string @quoted tem a seguinte aparência -
@"Tutorials Point";
Os tipos de referência definidos pelo usuário são: classe, interface ou delegado. Discutiremos esses tipos no capítulo posterior.
Tipo de Ponteiro
Variáveis de tipo de ponteiro armazenam o endereço de memória de outro tipo. Os ponteiros em C # têm os mesmos recursos que os ponteiros em C ou C ++.
A sintaxe para declarar um tipo de ponteiro é -
type* identifier;
Por exemplo,
char* cptr;
int* iptr;
Discutiremos os tipos de ponteiros no capítulo 'Códigos não seguros'.