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
, enChar
Date
Alle structuren, zelfs als hun leden verwijzingstypen zijn
Opsommingen, omdat het onderliggende type altijd
SByte
, ,Short
, ,Integer
,Byte
Long
, ,UShort
, , ofUInteger
ULong
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
.