CType, functie (Visual Basic)
Retourneert het resultaat van het expliciet converteren van een expressie naar een opgegeven gegevenstype, object, structuur, klasse of interface.
Syntaxis
CType(expression, typename)
generator
expression
Elke geldige expressie. Als de waarde expression
buiten het toegestane bereik typename
valt, genereert Visual Basic een uitzondering.
typename
Elke expressie die juridisch is binnen een As
component in een Dim
instructie, dat wil zeggen de naam van elk gegevenstype, object, structuur, klasse of interface.
Opmerkingen
Tip
U kunt ook de volgende functies gebruiken om een typeconversie uit te voeren:
- Typeconversiefuncties zoals
CByte
,CDbl
enCInt
die een conversie naar een specifiek gegevenstype uitvoeren. Zie Typeconversiefuncties voor meer informatie. - DirectCast-operator of TryCast-operator. Voor deze operators is vereist dat één type het andere type over neemt of implementeert. Ze kunnen iets betere prestaties bieden dan
CType
bij het converteren naar en van hetObject
gegevenstype.
CType
wordt inline gecompileerd, wat betekent dat de conversiecode deel uitmaakt van de code die de expressie evalueert. In sommige gevallen wordt de code sneller uitgevoerd omdat er geen procedures worden aangeroepen om de conversie uit te voeren.
Als er geen conversie is gedefinieerd van expression
naar typename
(bijvoorbeeld van Integer
naar Date
), wordt in Visual Basic een foutbericht weergegeven waarin een compilatietijd wordt weergegeven.
Als er tijdens runtime een conversie mislukt, wordt de juiste uitzondering gegenereerd. Als een narrowing conversie mislukt, is dit OverflowException het meest voorkomende resultaat. Als de conversie niet is gedefinieerd, treedt er een InvalidCastException fout op. Dit kan bijvoorbeeld gebeuren als expression
het type Object
is en het runtimetype geen conversie heeft naar typename
.
Als het gegevenstype van expression
of typename
een klasse of structuur is die u hebt gedefinieerd, kunt u die klasse of structuur definiëren CType
als conversieoperator. Dit zorgt ervoor CType
dat het fungeert als een overbelaste operator. Als u dit doet, kunt u het gedrag van conversies naar en van uw klasse of structuur beheren, inclusief de uitzonderingen die kunnen worden gegenereerd.
Conversietrefwoorden
Een vergelijking van de trefwoorden voor typeconversie is als volgt.
Trefwoord | Data types | Argumentrelatie | Runtimefout |
---|---|---|---|
CType |
Alle gegevenstypen | Verbreking of narrowing-conversie moet worden gedefinieerd tussen de twee gegevenstypen | Gooit InvalidCastException |
DirectCast-operator | Alle gegevenstypen | Het ene type moet overnemen van of het andere type implementeren | Gooit InvalidCastException |
TryCast | Alleen referentietypen | Het ene type moet overnemen van of het andere type implementeren | Retourneert niets |
Overbelasting
De CType
operator kan ook worden overbelast op een klasse of structuur die buiten uw code is gedefinieerd. Als uw code wordt geconverteerd naar of van een dergelijke klasse of structuur, moet u het gedrag van CType
de operator ervan begrijpen. Zie Operator Procedures voor meer informatie.
Dynamische objecten converteren
Typeconversies van dynamische objecten worden uitgevoerd door door de gebruiker gedefinieerde dynamische conversies die gebruikmaken van de TryConvert of BindConvert methoden. Als u met dynamische objecten werkt, gebruikt u de CTypeDynamic methode om het dynamische object te converteren.
Opmerking
In het volgende voorbeeld wordt de CType
functie gebruikt om een expressie te converteren naar het Single
gegevenstype.
Dim testNumber As Long = 1000
' The following line of code sets testNewType to 1000.0.
Dim testNewType As Single = CType(testNumber, Single)
Zie Impliciete en expliciete conversies voor meer voorbeelden.