- 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.
struct
)?
O que é uma estrutura (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
structs
não suportam herança, exceto a herança de interfaces. - Construtores: Uma
struct
não pode ter um construtor vazio. No entanto, pode ter construtores parametrizados. - Destrutores: As
structs
nã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
protected
não faz sentido em umastruct
, visto que não suportam herança.
struct
?
Quando usar uma 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.