Struct (Guida per programmatori C#)

Per la definizione delle strutture viene utilizzata la parola chiave struct, ad esempio:

public struct PostalAddress
{
    // Fields, properties, methods and events go here...
}

Le strutture condividono la maggior parte della sintassi delle classi, sebbene le prime siano più limitate rispetto alle seconde:

  • All'interno di una dichiarazione di struttura, i campi non possono essere inizializzati se non sono stati dichiarati come const o static.

  • Uno struct non può dichiarare un distruttore o un costruttore predefinito, ovvero un costruttore senza parametri.

  • Le strutture vengono copiate su assegnazione. Quando una struttura viene assegnata a una nuova variabile, vengono copiati tutti i dati e qualsiasi modifica alla nuova copia non causa la modifica dei dati nella copia originale. Questo è importante da ricordare quando si utilizzano insiemi con tipi di valore come Dictionary<string, myStruct>.

  • Le strutture sono tipi di valore, mentre le classi sono tipi di riferimento.

  • A differenza delle classi, è possibile creare istanze di oggetti struttura senza utilizzare un operatore new.

  • Le strutture possono dichiarare costruttori con parametri.

  • Una struttura non può ereditare da un'altra struct o da un'altra classe né può costituire la base di una classe. Tutte le strutture ereditano direttamente da System.ValueType, che eredita da System.Object.

  • Una struttura può implementare interfacce.

  • È possibile assegnare un valore null a una struttura che può essere utilizzata come tipo nullable.

Sezioni correlate

Per ulteriori informazioni:

Vedere anche

Riferimenti

Classi e struct (Guida per programmatori C#)

Classi (Guida per programmatori C#)

Concetti

Guida per programmatori C#

Progettazione di strutture