Código Central – Blog
Aprenda C#

Tipos de Valor em C#: Entenda a Diferença entre Structs, Enum e Tipos Anuláveis

Uma ilustração representando os tipos de valor em C#, incluindo exemplos de structs predefinidos como int, float e bool, mostrando a diferença entre tipos de valor e tipos de referência, com tipos de valor anuláveis representados por um símbolo de interrogação.

Tipos de Valor em C#: Entenda a Diferença entre Structs, Enum e Tipos Anuláveis

O C# oferece dois tipos fundamentais: tipos de valor e tipos de referência. Neste artigo, vamos explorar o que são tipos de valor em C# e como eles se diferenciam dos tipos de referência. Além disso, falaremos sobre tipos anuláveis, como eles funcionam e como usar essas características para garantir uma codificação eficiente.

O que são Tipos de Valor?

Os tipos de valor são structs ou enums que armazenam diretamente seus dados em vez de referenciar um local na memória, como os tipos de referência fazem. Quando você atribui um valor a uma variável de tipo de valor, está fazendo uma cópia do valor. Isso é diferente dos tipos de referência, nos quais apenas o ponteiro para o local de memória é copiado.

Exemplo de tipos de valor em C#:

int numero = 10;
float valorDecimal = 20.5f;
bool verdadeiroOuFalso = true;

Aqui, cada variável contém seu próprio valor diretamente.

O que é o System.ValueType?

Todos os tipos de valor em C# herdam de System.ValueType. Esse tipo especial ajuda os tipos de valor a se comportarem como objetos quando necessário. Isso significa que podemos “boxear” (converter) um valor de tipo de valor para um objeto e depois “desboxear” de volta para o tipo de valor.

int numero = 123;
object obj = numero; // Boxing
int desboxeado = (int)obj; // Unboxing

Construtores Padrão em Tipos de Valor

Tipos de valor sempre têm um construtor padrão que inicializa os campos para seus valores padrão. Por exemplo, int será 0, bool será false, e assim por diante.

int numero = new int(); // Inicializa para 0
bool flag = new bool(); // Inicializa para false

Tipos de Valor Anuláveis

Tipos de valor anuláveis são um recurso importante quando você deseja que um tipo de valor possa conter um valor nulo. Eles são representados pelo sufixo ?.

Exemplo de tipos anuláveis:

int? numeroNulo = null;
bool? flagNula = null;

Com tipos anuláveis, você pode verificar se a variável contém um valor antes de utilizá-la, evitando exceções.

Tipos Simples em C#

C# oferece uma série de tipos simples que são aliases para structs predefinidos no namespace System. Aqui estão alguns exemplos:

Palavra-ChaveNamespace completo
intSystem.Int32
floatSystem.Single
boolSystem.Boolean
decimalSystem.Decimal

Esses tipos simples são usados com frequência e permitem a criação de valores constantes ou literais no código.

Conclusão

Compreender os tipos de valor em C# é fundamental para escrever código eficiente e otimizado. Eles fornecem controle direto sobre a memória e evitam overheads desnecessários, como a alocação de objetos em heap. Além disso, os tipos anuláveis tornam o C# ainda mais flexível, permitindo o uso de valores nulos quando necessário.

Se você tem dúvidas ou já usou essas técnicas no seu código, compartilhe nos comentários sua experiência!

Posts relacionados

Tipos em C#: Entendendo Referências e Valores

Diogo
6 dias atrás

Método Main em C#: Entendendo o Ponto de Entrada de uma Aplicação

Diogo
1 semana atrás

Nomes de Namespace e Tipos em C#: Entendendo Nomes Qualificados e Escopos

Diogo
1 semana atrás
Sair da versão mobile