Differenza tra value type e reference type
Nel precedente articolo abbiamo visto i principali tipi di dati elementari per i due linguaggi di programmazione, ma c'è una distinzione da fare riguardo i tipi di dati.
I tipi di dati sono classificati in base al modo in cui memorizzano il loro valore nella memoria:
value type o reference type.
I tipi di dati sono classificati in base al modo in cui memorizzano il loro valore nella memoria:
value type o reference type.
Value type
Un tipo di dati è value type se contiene un valore di dati nel proprio spazio di memoria. Significa che le variabili di questi tipi di dati contengono direttamente i loro valori.
Quando si passa una variabile del tipo di valore da un metodo a un altro, il sistema crea una copia separata di una variabile in un altro metodo, in modo che se il valore è stato modificato in un metodo non influirà sulla variabile in un altro metodo.
I seguenti tipi di dati sono tutti di tipo valore:
- bool
- byte
- char
- decimal
- double
- enum
- float
- int
- long
- sbyte
- short
- struct
- uint
- ulong
- ushort
Reference type
A differenza dei value type, un reference type non memorizza direttamente il suo valore. Al contrario, memorizza l'indirizzo in cui viene memorizzato il valore. In altre parole, un tipo di riferimento contiene un puntatore a un'altra posizione di memoria che contiene i dati.
Quando si passa una variabile del tipo di riferimento da un metodo a un altro, non viene creata una nuova copia; invece, passa l'indirizzo della variabile. Se si cambiamo il valore della variabile in un metodo, si rifletterà anche nel metodo chiamante.
I seguenti tipi di dati sono di tipo di riferimento:
- string
- arrays(anche se i loro elementi sono value types)
- class (esempio di tipo di dato reference type creato dall’utente)
- delegates
Commenti
Posta un commento