Dela via


Värdetyper och referenstyper

Det finns två typer av typer i Visual Basic: referenstyper och värdetyper. Variabler av referenstyper lagrar referenser till sina data (objekt), medan variabler av värdetyper direkt innehåller sina data. Med referenstyper kan två variabler referera till samma objekt. Därför kan åtgärder på en variabel påverka det objekt som refereras av den andra variabeln. Med värdetyper har varje variabel en egen kopia av data och det är inte möjligt att åtgärder på den ena variabeln påverkar den andra (förutom när det gäller ByRef-modifieraren för parametrar).

Värdetyper

En datatyp är en värdetyp om den innehåller data i sin egen minnesallokering. Värdetyperna omfattar följande:

  • Alla numeriska datatyper

  • Boolean, Char, och Date

  • Alla strukturer, även om deras medlemmar är referenstyper

  • Uppräkningar, eftersom deras underliggande typ alltid SByteär , Short, Integer, Long, Byte, UShort, , UIntegereller ULong

Varje struktur är en värdetyp, även om den innehåller referenstypmedlemmar. Därför implementeras värdetyper som Char och Integer av .NET Framework-strukturer.

Du kan deklarera en värdetyp med hjälp av det reserverade nyckelordet, Decimaltill exempel . Du kan också använda nyckelordet New för att initiera en värdetyp. Detta är särskilt användbart om typen har en konstruktor som tar parametrar. Ett exempel på detta är Decimal(Int32, Int32, Int32, Boolean, Byte) konstruktorn, som skapar ett nytt Decimal värde från de angivna delarna.

Referenstyper

En referenstyp lagrar en referens till sina data. Referenstyperna omfattar följande:

  • String

  • Alla matriser, även om deras element är värdetyper

  • Klasstyper, till exempel Form

  • Delegeringar

En klass är en referenstyp. Observera att varje matris är en referenstyp, även om dess medlemmar är värdetyper.

Eftersom varje referenstyp representerar en underliggande .NET Framework-klass måste du använda nyckelordet Ny operator när du initierar den. Följande instruktion initierar en matris.

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

Element som inte är typer

Följande programmeringselement kvalificerar sig inte som typer eftersom du inte kan ange någon av dem som en datatyp för ett deklarerat element:

  • Namnrymder

  • Moduler

  • Händelser

  • Egenskaper och procedurer

  • Variabler, konstanter och fält

Arbeta med objektdatatypen

Du kan tilldela antingen en referenstyp eller en värdetyp till en variabel av Object datatypen. En Object variabel innehåller alltid en referens till data, aldrig själva data. Men om du tilldelar en värdetyp till en Object variabel fungerar den som om den innehåller sina egna data. Mer information finns i Objektdatatyp.

Du kan ta reda på om en Object variabel fungerar som en referenstyp eller en värdetyp genom att skicka den IsReference till -metoden i Information -klassen för Microsoft.VisualBasic namnområdet. Information.IsReference returnerar True om innehållet i variabeln Object representerar en referenstyp.

Se även