Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een impliciete conversie vereist geen speciale syntaxis in de broncode. In het volgende voorbeeld converteert Visual Basic impliciet de waarde van k
naar een drijvendekommawaarde met één precisie voordat u deze toewijst aan q
.
Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k
Voor een expliciete conversie wordt een trefwoord voor typeconversie gebruikt. Visual Basic biedt verschillende dergelijke trefwoorden, waardoor een expressie tussen haakjes wordt gekoppeld aan het gewenste gegevenstype. Deze trefwoorden fungeren als functies, maar de compiler genereert de code inline, dus de uitvoering verloopt iets sneller dan met een functie-aanroep.
In de volgende extensie van het vorige voorbeeld converteert het CInt
trefwoord de waarde van q
terug naar een geheel getal voordat het wordt toegewezen aan k
.
' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).
Conversietrefwoorden
In de volgende tabel ziet u de beschikbare conversietrefwoorden.
Trefwoord voor typeconversie | Converteert een expressie naar het gegevenstype | Toegestane gegevenstypen van expressies om te converteren |
---|---|---|
CBool |
Booleaanse gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), String Object |
CByte |
Bytegegevenstype | Elk numeriek type (inclusief SByte en opgesomde typen), Boolean , , String Object |
CChar |
Gegevenstype teken |
String , Object |
CDate |
Datumgegevenstype |
String , Object |
CDbl |
Dubbel gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CDec |
Decimaal gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CInt |
Gegevenstype Integer | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CLng |
Lang gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CObj |
objectgegevenstype | Alle soorten |
CSByte |
SByte-gegevenstype | Elk numeriek type (inclusief Byte en opgesomde typen), Boolean , , String Object |
CShort |
Kort gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CSng |
Eén gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CStr |
Tekenreeks gegevenstype | nl-NL: Elk numeriek type (inclusief Byte , SByte en geënumereerd type), Boolean , Char , Char array, Date , Object |
CType |
Type dat is opgegeven na de komma (, ) |
Bij het converteren naar een elementair gegevenstype (inclusief een matrix van een basistype), dezelfde typen als die zijn toegestaan voor het bijbehorende trefwoord voor conversie Bij het converteren naar een samengesteld gegevenstype worden de interfaces die het implementeert en de klassen waaruit het erft, opgenomen. Bij het converteren naar een klasse of structuur waarop u overbelast CType bent, die klasse of structuur |
CUInt |
UInteger Gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CULng |
ULong-gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
CUShort |
UShort-gegevenstype | Elk numeriek type (inclusief Byte , SByte en opgesomde typen), Boolean , , String Object |
De functie CType
De CType-functie werkt op twee argumenten. De eerste is de expressie die moet worden geconverteerd en de tweede is het doelgegevenstype of de objectklasse. Houd er rekening mee dat het eerste argument een expressie moet zijn, niet een type.
CType
is een inlinefunctie, wat betekent dat de gecompileerde code de conversie maakt, vaak zonder een functieaanroep te genereren. Dit verbetert de prestaties.
Zie CType
en TryCast Operator voor een vergelijking van de andere typeconversietrefwoorden.
Elementaire typen
In het volgende voorbeeld ziet u het gebruik van CType
.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
Samengestelde typen
U kunt CType
waarden converteren naar samengestelde gegevenstypen en naar elementaire typen. U kunt deze ook gebruiken om een objectklasse te dwingen tot het type van een van de bijbehorende interfaces, zoals in het volgende voorbeeld.
' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)
Arraytypen
CType
kan ook matrixgegevenstypen converteren, zoals in het volgende voorbeeld.
Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
' obArray can be converted to classV.
v = CType(obArray, classV())
End If
Zie Matrixconversies voor meer informatie en een voorbeeld.
Typen die CType definiëren
U kunt definiëren CType
voor een klasse of structuur die u hebt gedefinieerd. Hiermee kunt u waarden converteren naar en van het type klasse of structuur. Zie Een conversieoperator definiëren voor meer informatie en een voorbeeld.
Opmerking
Waarden die worden gebruikt met een conversiewoord moeten geldig zijn voor het doelgegevenstype of er treedt een fout op. Als u bijvoorbeeld probeert een Long
waarde te converteren naar een Integer
, moet de waarde van de Long
waarde binnen het geldige bereik voor het Integer
gegevenstype vallen.
Waarschuwing
Speciferen van CType
om van het ene klassetype naar het andere te converteren mislukt tijdens runtime als het brontype niet is afgeleid van het doeltype. Een dergelijke fout genereert een InvalidCastException uitzondering.
Als een van de typen echter een structuur of klasse is die u hebt gedefinieerd en als u hebt gedefinieerd CType
voor die structuur of klasse, kan een conversie slagen als deze voldoet aan de vereisten van uw CType
. Zie Procedure: Een conversieoperator definiëren.
Een expliciete conversie uitvoeren staat ook bekend als het casten van een expressie naar een bepaald gegevenstype of objectklasse.