Le strutture (o struct
in inglese) sono un tipo di dati composto generalmente utilizzato per incapsulare piccoli gruppi di variabili correlate, ad esempio le coordinate di un rettangolo o il posizionamento di un punto nello spazio.
Si tratta quindi di un tipo di dato ideale per piccoli oggetti, anche se talvolta uno stesso concetto potrebbe essere implementato come struttura o classe senza rilevanti differenze fra le due possibilità .
Sintassi
La sintassi per dichiarare una struttura in C# è molto semplice. Ecco un esempio di come dichiararla:
struct Punto
{
public int X;
public int Y;
}
Qui abbiamo dichiarato una struttura chiamata Punto, che contiene due campi pubblici: X e Y, entrambi di tipo intero.
Inizializzazione di una struttura
Per creare un’istanza di una struttura, puoi utilizzare il costruttore predefinito o definirne uno tu. Ecco come puoi inizializzare una struttura:
Punto p = new Punto();
p.X = 10;
p.Y = 20;
Oppure, puoi utilizzare un costruttore personalizzato per inizializzarla:
struct Punto
{
public int X;
public int Y;
public Punto(int x, int y)
{
X = x;
Y = y;
}
}
Punto p = new Punto(10, 20);
Accedere ai campi
Una volta creata l’istanza della struttura, puoi accedere ai suoi campi come faresti con una classe. Nell’esempio precedente, abbiamo acceduto a X e Y direttamente dall’oggetto Punto.
Console.WriteLine($"X: {p.X}, Y: {p.Y}");
Questo stampa i valori dei campi X e Y.
Utilizzo delle strutture
Le strutture sono particolarmente utili quando si lavora con piccoli gruppi di dati. Ad esempio, in un’applicazione di grafica, potresti voler rappresentare coordinate o punti nello spazio 2D o 3D.
Un altro utilizzo comune è in scenari dove il valore dell’oggetto è più importante del suo riferimento. Poiché le strutture sono tipi di valore, vengono memorizzate direttamente nella stack, a differenza delle classi che sono tipi di riferimento e vengono memorizzate nell’heap.
Metodi di una struttura
Le strutture in C# possono anche contenere metodi. Questo significa che puoi aggiungere funzioni utili all’interno della tua struttura. Ecco un esempio:
struct Punto
{
public int X;
public int Y;
public Punto(int x, int y)
{
X = x;
Y = y;
}
public void Sposta(int deltaX, int deltaY)
{
X += deltaX;
Y += deltaY;
}
}
Punto p = new Punto(10, 20);
p.Sposta(5, 10);
In questo esempio, abbiamo aggiunto un metodo Sposta che modifica i valori di X e Y.
Conclusione
Le strutture in C# sono uno strumento potente e versatile, utili per rappresentare gruppi di dati semplici. Anche se possono sembrare simili alle classi, è importante ricordare che sono tipi di valore e vengono utilizzate in contesti dove è più efficiente lavorare con dati memorizzati direttamente nella stack. Sperimenta con le strutture e scoprirai quanto possono essere utili nella tua programmazione quotidiana!