Delen via


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 typenamevalt, 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, CDblen CInt 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 het Object 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.

Zie ook