Delen via


DirectCast-operator (Visual Basic)

Introduceert een typeconversiebewerking op basis van overname of implementatie.

Opmerkingen

DirectCast maakt geen gebruik van de Runtime-helperroutines van Visual Basic voor conversie, zodat deze enigszins betere prestaties kan bieden dan CType bij het converteren naar en van het gegevenstype Object.

U gebruikt het DirectCast trefwoord dat vergelijkbaar is met de manier waarop u de CType-functie en het trefwoord TryCast Operator gebruikt. U geeft een expressie op als het eerste argument en een type waarnaar u deze wilt converteren als het tweede argument. DirectCast vereist een overname- of implementatierelatie tussen de gegevenstypen van de twee argumenten. Dit betekent dat het ene type moet overnemen van of het andere moet implementeren.

Fouten en fouten

DirectCast genereert een compilerfout als wordt gedetecteerd dat er geen overname- of implementatierelatie bestaat. Maar het ontbreken van een compilerfout garandeert geen geslaagde conversie. Als de gewenste conversie wordt beperkt, kan deze tijdens de uitvoering mislukken. Als dit gebeurt, genereert de runtime een InvalidCastException fout.

Conversietrefwoorden

Een vergelijking van de trefwoorden voor typeconversie is als volgt.

Trefwoord Data types Argumentrelatie Runtimefout
CType, functie Alle gegevenstypen Verbreking of narrowing-conversie moet worden gedefinieerd tussen de twee gegevenstypen Gooit InvalidCastException
DirectCast Alle gegevenstypen Het ene type moet overnemen van of het andere type implementeren Gooit InvalidCastException
TryCast-operator Alleen referentietypen Het ene type moet overnemen van of het andere type implementeren Retourneert niets

Opmerking

In het volgende voorbeeld ziet u twee toepassingen van DirectCast, één die mislukt tijdens de uitvoering en één die slaagt.

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

In het voorgaande voorbeeld is het runtimetype q .Double CType slaagt omdat Double kan worden geconverteerd naar Integer. De eerste DirectCast mislukt echter tijdens de uitvoering omdat het uitvoeringstype van Double het type overname geen overnamerelatie heeft, Integerook al bestaat er een conversie. De tweede DirectCast slaagt omdat het wordt geconverteerd van type Form naar type Control, van waaruit Form wordt overgenomen.

Zie ook