Condividi tramite


Tipi Valore e Tipi di Riferimento

In Visual Basic sono disponibili due tipi di tipi: tipi riferimento e tipi valore. Le variabili dei tipi di riferimento archiviano i riferimenti ai relativi dati (oggetti), mentre le variabili di tipi valore contengono direttamente i dati. Con i tipi di riferimento, due variabili possono fare riferimento allo stesso oggetto. Di conseguenza le operazioni su una variabile possono influire sull'oggetto a cui fa riferimento l'altra variabile. Con i tipi valore, ogni variabile ha una propria copia dei dati e non è possibile che le operazioni su una variabile influiscano sull'altra (tranne nel caso del modificatore ByRef sui parametri).

Tipi di valore

Un tipo di dati è un tipo valore se contiene i dati all'interno della propria allocazione di memoria. I tipi valore includono quanto segue:

  • Tutti i tipi di dati numerici

  • Boolean, Char e Date

  • Tutte le strutture, anche se i relativi membri sono tipi di riferimento

  • Enumerazioni, poiché il tipo sottostante è sempre SByte, Short, Integer, Long, Byte, UShort, UInteger o ULong

Ogni struttura è un tipo valore, anche se contiene membri del tipo riferimento. Per questo motivo, i tipi valore come Char e Integer vengono implementati dalle strutture di .NET Framework.

È possibile dichiarare un tipo di valore usando la parola chiave riservata, Decimalad esempio . È anche possibile usare la New parola chiave per inizializzare un tipo di valore. Ciò è particolarmente utile se il tipo ha un costruttore che accetta parametri. Un esempio è il Decimal(Int32, Int32, Int32, Boolean, Byte) costruttore , che crea un nuovo Decimal valore dalle parti fornite.

Tipi di riferimento

Un tipo riferimento archivia un riferimento ai relativi dati. I tipi di riferimento includono quanto segue:

  • String

  • Tutte le matrici, anche se i relativi elementi sono tipi di valore

  • Tipi di classe, ad esempio Form

  • Delegati

Una classe è un tipo riferimento. Si noti che ogni matrice è un tipo riferimento, anche se i relativi membri sono tipi valore.

Poiché ogni tipo di riferimento rappresenta una classe .NET Framework sottostante, è necessario usare la parola chiave New Operator quando viene inizializzata. L'istruzione seguente inizializza una matrice.

Dim totals() As Single = New Single(8) {}  

Elementi non tipi

Gli elementi di programmazione seguenti non sono qualificati come tipi, perché non è possibile specificare nessuno di essi come tipo di dati per un elemento dichiarato:

  • Namespace

  • moduli

  • Avvenimenti

  • Proprietà e procedure

  • Variabili, costanti e campi

Utilizzo del tipo di dati oggetto

È possibile assegnare un tipo riferimento o un tipo valore a una variabile del Object tipo di dati. Una Object variabile contiene sempre un riferimento ai dati, mai i dati stessi. Tuttavia, se si assegna un tipo di valore a una Object variabile, si comporta come se contiene i propri dati. Per altre informazioni, vedere Tipo di dati object.

È possibile scoprire se una Object variabile funge da tipo riferimento o tipo di valore passandola al metodo IsReference nella classe Information del namespace Microsoft.VisualBasic. Information.IsReference restituisce True se il contenuto della Object variabile rappresenta un tipo riferimento.

Vedere anche