- Autore

- Nome
- Nelson Silva
- Social
Introduzione
Il linguaggio C# è ricco di tipi, offrendo ai programmatori un'ampia varietà di strumenti per risolvere i problemi. Tra questi strumenti ci sono le strutture (structs), particolarmente utili per rappresentare oggetti leggeri che hanno una semantica di valore.
Cos'è una struttura (struct)?
In C#, una struct è un tipo di valore utilizzato per incapsulare piccole quantità di dati correlati. Grazie alla sua natura di tipo di valore, occupa direttamente spazio in memoria, evitando l'allocazione nell'heap, il che la rende più veloce in certe circostanze rispetto alle classi.
Strutture vs Classi
Differenze tra structs e classi:
- Tipo di Assegnazione: Mentre una
structè un tipo di valore, una classe è un tipo di riferimento. Questa differenza fondamentale determina il comportamento in varie operazioni, specialmente nell'assegnazione e nel passaggio di parametri. - Ereditarietà: Le
structsnon supportano l'ereditarietà, ad eccezione dell'ereditarietà da interfacce. - Costruttori: Una
structnon può avere un costruttore senza parametri. Tuttavia, può avere costruttori parametrizzati. - Distruttori: Le
structsnon possono avere distruttori. I distruttori vengono utilizzati nelle classi per eseguire qualsiasi pulizia necessaria prima che un oggetto venga raccolto dal garbage collector. - Modificatori di accesso: Il modificatore
protectednon ha senso in unastruct, poiché non supportano l'ereditarietà.
Quando usare una struct?
Le structs sono ideali nelle situazioni in cui:
- L'istanza è piccola e ha una semantica di valore.
- È preferibile evitare allocazioni nell'heap.
- L'oggetto rappresenta un singolo valore logico, come un numero o un punto dati.
Esempio Pratico
Ecco un esempio di una struct in azione:
using System;
namespace Base {
class Struct {
public void Run() {
var struttura = new Struttura();
struttura.Numero = 200;
// Il numero deve essere >= 0 e <= 100.
}
}
struct Struttura : INumero {
private int numero;
public int Numero {
set {
if (value >= 0 && value <= 100) {
numero = value;
StampaNumero();
}
else
Console.WriteLine("Il numero deve essere >= 0 e <= 100.");
}
}
public void StampaNumero() {
Console.WriteLine($"Numero: {numero}");
}
}
interface INumero {
void StampaNumero();
}
}
Conclusione
La scelta tra usare una struct o una classe in C# dipende dalle esigenze specifiche del tuo progetto. Speriamo che con questo articolo tu abbia acquisito una comprensione chiara delle strutture e di quando possono essere utili.