Object come tipo di dati universale
Aggiornamento: novembre 2007
Il Tipo di dati Object rappresenta il tipo radice in .NET Framework e in Visual Basic. Questo significa che tutti gli altri tipi di dati e di oggetti derivano da esso, direttamente o indirettamente. Significa inoltre che qualsiasi altro tipo di dati, sia esso di base o composto, è convertibile nel tipo Object.
Tipizzazione debole
È possibile utilizzare Object come tipo di dati universale. Si tratta di una tipizzazione debole. Questa flessibilità è illustrata nell'esempio che segue.
Dim v As Object
v = "17"
' v contains the 2-character String value "17".
v = v - 15
' v now contains the Integer value 2.
v = "H" & v
' v now contains the 2-character String value "H2".
Sebbene sia possibile eseguire tali operazioni su variabili Object senza preoccuparsi eccessivamente del tipo di dati in esse contenuto, è opportuno adottare alcune precauzioni:
Se si eseguono funzioni o operazioni aritmetiche su un Object, è necessario che questo contenga dati numerici onde evitare errori di runtime.
Se si concatenano stringhe, utilizzare l'operatore & anziché l'operatore +. Esistono regole complesse che determinano quando l'operatore + aggiunge i propri operandi e quando li concatena. In alcuni casi, l'operatore + deve anche eseguire il controllo dei tipi e la conversione, generando in questo modo un calo delle prestazioni.
Modifica del tipo di dati di una variabile oggetto
Sebbene una variabile Object possa accettare dati di qualsiasi tipo, non è possibile modificarla in un tipo di dati differente. È tuttavia possibile ridimensionare una variabile Object in una matrice di variabili Object. Nell'esempio che segue vengono illustrati sia gli usi validi che non validi dell'Istruzione ReDim (Visual Basic).
' The following statement declares a single Object.
Dim someObj As Object
' The following reallocation is valid only for Object.
ReDim someObj(8)
' The following statement attempts an INVALID change of data type.
ReDim someObj(8) As Double
La prima istruzione ReDim converte someObj in una matrice di tipo Object. Questo è valido soltanto con il tipo di dati Object. La seconda istruzione ReDim non è valida perché interessa un tipo di dati differente. È possibile ottenere l'effetto desiderato utilizzando una matrice separata. Questa condizione è illustrata nell'esempio che segue.
' First allocate a separate array.
Dim someArray(8) As Double
' Then assign the new array to the Object variable.
someObj = someArray
Matrici Object come alternativa alle strutture
Dal momento che il tipo di dati Object è in grado di memorizzare numerosi tipi di dati differenti, è possibile utilizzare una matrice Object in numerose situazioni in cui ci si aspetterebbe di utilizzare una struttura. Una matrice Object è sotto certi aspetti più flessibile di una struttura, perché è possibile modificare in qualsiasi momento il tipo di dati memorizzato in ciascun elemento, nonché rendere la matrice dinamica in modo da poterne variare le dimensioni in base alle necessità. Una matrice Object utilizza tuttavia una maggior quantità di memoria rispetto a una struttura equivalente ed è caratterizzata da prestazioni più lente.
Vedere anche
Concetti
Programmazione senza tipi in Visual Basic
Dichiarazione implicita ed esplicita
Controllo dei tipi in Visual Basic
Utilizzo efficiente dei tipi di dati
Dichiarazione di variabili oggetto
Assegnazione di variabili oggetto
Riferimenti
Riepilogo dei tipi di dati (Visual Basic)
Funzioni di conversione del tipo