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'.