Share via


Waardetypen en verwijzingstypen

Er zijn twee soorten typen in Visual Basic: referentietypen en waardetypen. In variabelen van referentietypen worden verwijzingen naar hun gegevens (objecten) opgeslagen, terwijl variabelen van waardetypen rechtstreeks hun gegevens bevatten. Met verwijzingstypen kunnen twee variabelen verwijzen naar hetzelfde object; Bewerkingen op één variabele kunnen daarom van invloed zijn op het object waarnaar wordt verwezen door de andere variabele. Met waardetypen heeft elke variabele een eigen kopie van de gegevens en is het niet mogelijk om bewerkingen op de ene variabele te beïnvloeden (behalve in het geval van de ByRef-wijzigingsfunctie voor parameters).

Waardetypen

Een gegevenstype is een waardetype als deze de gegevens binnen de eigen geheugentoewijzing bevat. Waardetypen omvatten het volgende:

  • Alle numerieke gegevenstypen

  • Boolean, en CharDate

  • Alle structuren, zelfs als hun leden verwijzingstypen zijn

  • Opsommingen, omdat het onderliggende type altijd SByte, , Short, , Integer, ByteLong, , UShort, , of UIntegerULong

Elke structuur is een waardetype, zelfs als deze leden van het referentietype bevat. Daarom worden waardetypen zoals Char en Integer worden geïmplementeerd door .NET Framework-structuren.

U kunt een waardetype declareren met behulp van het gereserveerde trefwoord, bijvoorbeeld Decimal. U kunt ook het New trefwoord gebruiken om een waardetype te initialiseren. Dit is vooral handig als het type een constructor heeft die parameters gebruikt. Een voorbeeld hiervan is de Decimal(Int32, Int32, Int32, Boolean, Byte) constructor, waarmee een nieuwe Decimal waarde wordt gebouwd op basis van de opgegeven onderdelen.

Verwijzingstypen

In een verwijzingstype wordt een verwijzing naar de gegevens opgeslagen. Referentietypen zijn onder andere:

  • String

  • Alle matrices, zelfs als hun elementen waardetypen zijn

  • Klassetypen, zoals Form

  • Gedelegeerden

Een klasse is een verwijzingstype. Houd er rekening mee dat elke matrix een verwijzingstype is, zelfs als de leden waardetypen zijn.

Aangezien elk verwijzingstype een onderliggende .NET Framework-klasse vertegenwoordigt, moet u het trefwoord New Operator gebruiken wanneer u het initialiseert. Met de volgende instructie wordt een matrix geïnitialiseerd.

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

Elementen die geen typen zijn

De volgende programmeerelementen komen niet in aanmerking als typen, omdat u geen van deze elementen kunt opgeven als gegevenstype voor een gedeclareerd element:

  • Naamruimten

  • Modules

  • gebeurtenis

  • Eigenschappen en procedures

  • Variabelen, constanten en velden

Werken met het gegevenstype Object

U kunt een verwijzingstype of een waardetype toewijzen aan een variabele van het Object gegevenstype. Een Object variabele bevat altijd een verwijzing naar de gegevens, nooit de gegevens zelf. Als u echter een waardetype aan een Object variabele toewijst, gedraagt het zich alsof deze eigen gegevens bevat. Zie Objectgegevenstype voor meer informatie.

U kunt nagaan of een Object variabele fungeert als een verwijzingstype of een waardetype door deze door te geven aan de IsReference methode in de Information klasse van de Microsoft.VisualBasic naamruimte. Information.IsReferenceretourneert als de inhoud van de Object variabele een verwijzingstype vertegenwoordigtTrue.

Zie ook