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.

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:
  1. bool
  2. byte
  3. char
  4. decimal
  5. double 
  6. enum
  7. float
  8. int
  9. long
  10. sbyte
  11. short
  12. struct
  13. uint
  14. ulong
  15. 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

Post popolari in questo blog

Alcuni esempi di strategie di trading algoritmico utilizzate

Processi stocastici con mean reversion: Ornstein–Uhlenbeck process, Dixit & Pindyck Model, Vasicek model, etc

Bollinger Bands