- Autor

- Nome
- Nelson Silva
- Social
Introdução
A linguagem C# é rica em tipos, oferecendo aos programadores uma ampla variedade de ferramentas para resolver problemas. Entre essas ferramentas estão as estruturas (structs), que são especialmente úteis para representar objetos leves que possuem uma semântica de valor.
O que é uma estrutura (struct)?
No C#, uma struct é um tipo de valor que é utilizado para encapsular pequenas quantidades de dados relacionados. Devido à sua natureza de tipo de valor, ocupa diretamente um espaço na memória, evitando a alocação no heap, o que a torna mais rápida em certas circunstâncias em comparação com as classes.
Estruturas vs Classes
Diferenças entre structs e classes:
- Tipo de Atribuição: Enquanto uma
structé um tipo de valor, uma classe é um tipo de referência. Essa diferença fundamental dita o comportamento em várias operações, especialmente na atribuição e passagem de parâmetros. - Herança: As
structsnão suportam herança, exceto a herança de interfaces. - Construtores: Uma
structnão pode ter um construtor vazio. No entanto, pode ter construtores parametrizados. - Destrutores: As
structsnão podem ter destrutores. Destrutores são usados em classes para realizar qualquer limpeza necessária antes que um objeto seja coletado pelo coletor de lixo. - Modificadores de acesso: O modificador
protectednão faz sentido em umastruct, visto que não suportam herança.
Quando usar uma struct?
As structs são ideais em situações onde:
- A instância é pequena e possui uma semântica de valor.
- É desejável evitar alocações no heap.
- O objeto representa um único valor lógico, como um número ou ponto de dados.
Exemplo Prático
Aqui está um exemplo de uma struct em ação:
using System;
namespace Base {
class Struct {
public void Run() {
var estrutura = new Estrutura();
estrutura.Numero = 200;
// O número precisa de ser >= 0 e <= 100.
}
}
struct Estrutura : INumero {
private int numero;
public int Numero {
set {
if (value >= 0 && value <= 100) {
numero = value;
ImprimirNumero();
}
else
Console.WriteLine("O número precisa de ser >= 0 e <= 100.");
}
}
public void ImprimirNumero() {
Console.WriteLine($"Número: {numero}");
}
}
interface INumero {
void ImprimirNumero();
}
}
Conclusão
A escolha entre usar uma struct ou classe em C# depende das necessidades específicas do seu projeto. Esperamos que com este artigo você tenha adquirido uma compreensão clara das estruturas e quando elas podem ser úteis.