Samengestelde gegevenstypen (Visual Basic)
Naast de elementaire gegevenstypen die Visual Basic levert, kunt u ook items van verschillende typen samenstellen om samengestelde gegevenstypen te maken, zoals structuren, matrices en klassen. U kunt samengestelde gegevenstypen maken van elementaire typen en van andere samengestelde typen. U kunt bijvoorbeeld een matrix met structuurelementen of een structuur met matrixleden definiëren.
Gegevenstypen
Een samengesteld type verschilt van het gegevenstype van een van de onderdelen. Een matrix met Integer
elementen is bijvoorbeeld niet van het Integer
gegevenstype.
Een matrixgegevenstype wordt normaal gesproken weergegeven met behulp van het elementtype, haakjes en komma's, indien nodig. Een eendimensionale matrix met String
elementen wordt bijvoorbeeld weergegeven als String()
, en een tweedimensionale matrix met Boolean
elementen wordt weergegeven als Boolean(,)
.
Structuurtypen
Er is geen enkel gegevenstype dat alle structuren omvat. In plaats daarvan vertegenwoordigt elke definitie van een structuur een uniek gegevenstype, zelfs als twee structuren identieke elementen in dezelfde volgorde definiëren. Als u echter twee of meer exemplaren van dezelfde structuur maakt, worden deze in Visual Basic beschouwd als van hetzelfde gegevenstype.
Tuples
Een tuple is een lichtgewicht structuur die twee of meer velden bevat waarvan de typen vooraf zijn gedefinieerd. Tuples worden ondersteund vanaf Visual Basic 2017. Tuples worden meestal gebruikt voor het retourneren van meerdere waarden uit één methode-aanroep zonder argumenten door te geven per verwijzing of het verpakken van de geretourneerde velden in een meer zware klasse of structuur. Zie het onderwerp Tuples voor meer informatie over tuples.
Matrixtypen
Er is geen enkel gegevenstype dat alle matrices omvat. Het gegevenstype van een bepaald exemplaar van een matrix wordt bepaald door het volgende:
Het feit dat het een matrix is
De rang (aantal dimensies) van de matrix
Het elementtype van de matrix
Met name de lengte van een bepaalde dimensie maakt geen deel uit van het gegevenstype van het exemplaar. In het volgende voorbeeld ziet u dit.
Dim arrayA( ) As Byte = New Byte(12) {}
Dim arrayB( ) As Byte = New Byte(100) {}
Dim arrayC( ) As Short = New Short(100) {}
Dim arrayD( , ) As Short
Dim arrayE( , ) As Short = New Short(4, 10) {}
In het voorgaande voorbeeld worden matrixvariabelen arrayA
beschouwd als arrayB
hetzelfde gegevenstype, Byte()
ook al worden ze geïnitialiseerd tot verschillende lengten. Variabelen arrayB
en arrayC
zijn niet van hetzelfde type omdat hun elementtypen verschillen. Variabelen arrayC
en arrayD
zijn niet van hetzelfde type omdat hun rangschikkingen verschillen. Variabelen arrayD
en arrayE
hetzelfde type hebben, Short(,)
omdat hun rangschikkingen en elementtypen hetzelfde zijn, ook al arrayD
zijn ze nog niet geïnitialiseerd.
Zie Matrices voor meer informatie over matrices.
Klassetypen
Er is geen enkel gegevenstype dat alle klassen omvat. Hoewel één klasse kan overnemen van een andere klasse, is elk een afzonderlijk gegevenstype. Meerdere exemplaren van dezelfde klasse hebben hetzelfde gegevenstype. Als u één variabele van het klasse-exemplaar aan een andere toewijst, hebben ze niet alleen hetzelfde gegevenstype, maar wijzen ze naar hetzelfde klasse-exemplaar in het geheugen.
Zie Objecten en klassen voor meer informatie over klassen.