STAddo ha scritto:
dubbi: all'interno della struct vanno usati tipi primitivi dove ogni tipo non superi i 16 byte? oppure non devo superare in totale 16 byte con i tipi?
Credo si riferisca alla "dimensione ideale" che può essere allocata sullo stack senza degradare troppo le prestazioni, in quanto la differenza principale nell'uso delle
struct, rispetto a una
class ad esempio, risiede nel fatto che i dati della struttura sono allocati direttamente sullo stack della chiamata, ad esempio quando passi parametri a una funzione, e sono dei
Value Types (a differenza degli oggetti che sono
Reference Types).
Senza fartela troppo lunga, quando usi un tipo di dato
struct e ne assegni il valore da una variabile a un'altra, oppure assegni il valore a un parametro di un metodo di quel tipo, l'intero contenuto della struttura viene copiato, quindi più campi sono presenti all'interno, maggiore è l'area di memoria da allocare e nella quale trasferire i dati immagazzinati.
Se la struttura diventa troppo grande, il degrado nell'occupazione ottimale della memoria e/o delle prestazioni (legati alla copia necessaria di tutti i valori) diventa tale per cui conviene trasformarla invece in un oggetto, quindi definirla come
class.
Se guardi in giro, troverai che le
struct sono spesso usate per pochi dati che devono stare assieme, tipo la data con l'ora, oppure le coordinate di un punto, o le dimensioni di un riquadro, principalmente campi interi, semplici e in numero ridotto.
Ciao!