Objektdatatyp

Innehåller adresser som refererar till objekt. Du kan tilldela valfri referenstyp (sträng, matris, klass eller gränssnitt) till en Object variabel. En Object variabel kan också referera till data av valfri värdetyp (numerisk, Boolean, Char, Date, struktur eller uppräkning).

Kommentarer

Datatypen Object kan peka på data av vilken datatyp som helst, inklusive alla objektinstanser som programmet känner igen. Använd Object när du inte vet vid kompileringstillfället vilken datatyp variabeln kan peka på.

Standardvärdet Object för är Nothing (en null-referens).

Datatyper

Du kan tilldela en variabel, konstant eller ett uttryck av valfri datatyp till en Object variabel. Om du vill fastställa vilken datatyp en Object variabel för närvarande refererar till kan du använda GetTypeCode -metoden för System.Type klassen. I följande exempel visas detta.

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

Datatypen Object är en referenstyp. Visual Basic behandlar dock en Object variabel som en värdetyp när den refererar till data av en värdetyp.

Lagring

Oavsett vilken datatyp den refererar till innehåller en Object variabel inte själva datavärdet, utan snarare en pekare till värdet. Den använder alltid fyra byte i datorminnet, men det inkluderar inte lagringen för data som representerar variabelns värde. På grund av den kod som använder pekaren för att hitta data är Object variabler som innehåller värdetyper något långsammare att komma åt än variabler som uttryckligen anges.

Programmeringstips

  • Interop-överväganden. Om du interagerar med komponenter som inte är skrivna för .NET Framework, till exempel Automation- eller COM-objekt, bör du tänka på att pekartyper i andra miljöer inte är kompatibla med Visual Basic-typen Object .

  • Prestanda. En variabel som du deklarerar med Object typen är tillräckligt flexibel för att innehålla en referens till alla objekt. Men när du anropar en metod eller egenskap för en sådan variabel får du alltid sen bindning (vid körning). Om du vill framtvinga tidig bindning (vid kompileringstid) och bättre prestanda deklarerar du variabeln med ett specifikt klassnamn eller omvandlar den till den specifika datatypen.

    När du deklarerar en objektvariabel kan du försöka använda en viss klasstyp, till exempel OperatingSystemi stället för den generaliserade Object typen. Du bör också använda den mest specifika klassen som är tillgänglig, till exempel TextBox i stället för Control, så att du kan komma åt dess egenskaper och metoder. Du kan vanligtvis använda listan Klasser i Object Browser för att hitta tillgängliga klassnamn.

  • Breddning. Alla datatyper och alla referenstyper utvidgas Object till datatypen. Det innebär att du kan konvertera vilken typ som helst till Object utan att det uppstår något System.OverflowException fel.

    Men om du konverterar mellan värdetyper och Objectutför Visual Basic åtgärder som kallas boxning och avboxning, vilket gör körningen långsammare.

  • Skriv tecken. Object har inget tecken av typen literal eller identifierartyp.

  • Ramverkstyp. Motsvarande typ i .NET Framework är System.Object klassen .

Exempel

I följande exempel visas en Object variabel som pekar på en objektinstans.

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

Se även