Sammansatta datatyper (Visual Basic)
Förutom de grundläggande datatyperna Visual Basic-tillförseln kan du även montera objekt av olika typer för att skapa sammansatta datatyper som strukturer, matriser och klasser. Du kan skapa sammansatta datatyper från elementära typer och från andra sammansatta typer. Du kan till exempel definiera en matris med strukturelement eller en struktur med matrismedlemmar.
Datatyper
En sammansatt typ skiljer sig från datatypen för någon av dess komponenter. En matris med Integer
element är till exempel inte av Integer
datatypen.
En matrisdatatyp representeras normalt med elementtypen, parenteser och kommatecken efter behov. Till exempel representeras en endimensionell matris med String
element som String()
, och en tvådimensionell matris med Boolean
element representeras som Boolean(,)
.
Strukturtyper
Det finns ingen enskild datatyp som består av alla strukturer. I stället representerar varje definition av en struktur en unik datatyp, även om två strukturer definierar identiska element i samma ordning. Men om du skapar två eller flera instanser av samma struktur anser Visual Basic att de är av samma datatyp.
Tupplar
En tupplar är en lätt struktur som innehåller två eller flera fält vars typer är fördefinierade. Tupplar stöds från och med Visual Basic 2017. Tupplar används oftast för att returnera flera värden från ett enda metodanrop utan att behöva skicka argument med referens eller paketera de returnerade fälten i en mer tung viktklass eller struktur. Mer information om tupplar finns i avsnittet Tupplar .
Matristyper
Det finns ingen enskild datatyp som består av alla matriser. Datatypen för en viss instans av en matris bestäms av följande:
Faktumet att vara en matris
Matrisens rangordning (antal dimensioner)
Matrisens elementtyp
I synnerhet är längden på en viss dimension inte en del av instansens datatyp. I följande exempel visas detta.
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) {}
I föregående exempel anses matrisvariabler arrayA
och arrayB
vara av samma datatyp – Byte()
– även om de initieras till olika längder. arrayB
Variabler och arrayC
är inte av samma typ eftersom deras elementtyper är olika. Variabler arrayC
och arrayD
är inte av samma typ eftersom deras rangordning är olika. Variabler arrayD
och arrayE
har samma typ – Short(,)
– eftersom deras rangordning och elementtyper är desamma, även om arrayD
de ännu inte har initierats.
Mer information om matriser finns i Matriser.
Klasstyper
Det finns ingen enskild datatyp som består av alla klasser. Även om en klass kan ärva från en annan klass är var och en en separat datatyp. Flera instanser av samma klass har samma datatyp. Om du tilldelar en klassinstansvariabel till en annan, inte bara har samma datatyp, pekar de på samma klassinstans i minnet.
Mer information om klasser finns i Objekt och klasser.