Object Data Type

Contiene gli indirizzi che fanno riferimento agli oggetti. È possibile assegnare qualsiasi tipo di riferimento (stringa, matrice, classe o interfaccia) a una variabile Object. Una variabile Object può anche fare riferimento ai dati di qualsiasi tipo di valore (numerico, Boolean, Char, Date, struttura o enumerazione).

Osservazioni:

Il tipo di dati Object può puntare ai dati di qualsiasi tipo, inclusa qualsiasi istanza dell'oggetto riconosciuta dall'applicazione. Usare Object quando non si conosce in fase di compilazione il tipo di dati a cui potrebbe puntare la variabile.

Il valore predefinito di Object è Nothing (riferimento Null).

Tipi di dati

È possibile assegnare una variabile, una costante o un'espressione di qualsiasi tipo di dati a una variabile Object. Per determinare il tipo di dati a cui fa attualmente riferimento una variabile Object, è possibile usare il metodo GetTypeCode della classe System.Type. Ciò è illustrato nell'esempio seguente.

Dim myObject As Object
' Suppose myObject has now had something assigned to it.
Dim datTyp As Integer
datTyp = Type.GetTypeCode(myObject.GetType())

Il tipo di dati Object è un tipo riferimento. Tuttavia, Visual Basic considera una variabile Object come un tipo di valore quando fa riferimento ai dati di un tipo valore.

Storage

Indipendentemente dal tipo di dati a cui fa riferimento, una variabile Object non contiene il valore di dati stesso, ma piuttosto un puntatore al valore. Usa sempre quattro byte nella memoria del computer, ma non include l'archiviazione per i dati che rappresentano il valore della variabile. A causa del codice che usa il puntatore per individuare i dati, le variabili Object che contengono tipi valore sono leggermente più lente ad accedere rispetto alle variabili digitate in modo esplicito.

suggerimenti per la programmazione

  • Considerazioni sull'interoperabilità. Se si prevede l'interazione con componenti non scritti per .NET Framework, ad esempio oggetti COM o di automazione, tenere presente che i tipi di puntatore in altri ambienti non sono compatibili con il tipo Object di Visual Basic.

  • Prestazioni. Una variabile dichiarata con il tipo Object è sufficientemente flessibile da contenere un riferimento a qualsiasi oggetto. Tuttavia, quando si richiama un metodo o una proprietà in tale variabile, si incorre sempre nel binding tardivo (in fase di esecuzione). Per forzare il binding anticipato (in fase di compilazione) e migliorare le prestazioni, dichiarare la variabile con un nome di classe specifico o eseguirne il cast al tipo di dati specifico.

    Quando si dichiara una variabile oggetto, provare a usare un tipo di classe specifico, ad esempio OperatingSystem, anziché il tipo generalizzato Object. È anche consigliabile usare la classe più specifica disponibile, ad esempio TextBox anziché Control, in modo da poter accedere alle relative proprietà e metodi. In genere è possibile usare l'elenco Classi nel Visualizzatore oggetti per trovare i nomi di classe disponibili.

  • Ampliamento. Tutti i tipi di dati e tutti i tipi di riferimento si ampliano al tipo di dati Object. Ciò significa che è possibile convertire qualsiasi tipo in Object senza riscontrare un errore System.OverflowException.

    Tuttavia, se si esegue la conversione tra tipi valore e Object, Visual Basic esegue operazioni denominate boxing e unboxing, che rallentano l'esecuzione.

  • Caratteri tipo. Object non ha alcun carattere di tipo letterale o di tipo identificatore.

  • Tipo di framework. Il tipo corrispondente in .NET Framework è la classe System.Object.

Esempio

Nell'esempio seguente viene illustrata una variabile Object che punta a un'istanza dell'oggetto.

Dim objDb As Object
Dim myCollection As New Collection()
' Suppose myCollection has now been populated.
objDb = myCollection.Item(1)

Vedi anche