DirectCast-operator (Visual Basic)

Introducerar en typkonverteringsåtgärd baserat på arv eller implementering.

Kommentarer

DirectCast använder inte Visual Basic-hjälprutinerna för körning för konvertering, så det kan ge något bättre prestanda än CType när du konverterar till och från datatypen Object.

Du använder nyckelordet DirectCast på samma sätt som du använder CType-funktionen och nyckelordet TryCast-operator . Du anger ett uttryck som det första argumentet och en typ att konvertera det till som det andra argumentet. DirectCast kräver en arvs- eller implementeringsrelation mellan datatyperna för de två argumenten. Det innebär att en typ måste ärva från eller implementera den andra.

Fel och fel

DirectCast genererar ett kompilatorfel om det upptäcker att det inte finns någon arvs- eller implementeringsrelation. Men avsaknaden av ett kompilatorfel garanterar inte en lyckad konvertering. Om den önskade konverteringen minskar kan den misslyckas vid körning. Om detta händer utlöser körningen ett InvalidCastException fel.

Konverteringsnyckelord

En jämförelse av nyckelorden för typkonvertering är följande.

Nyckelord Datatyper Argumentrelation Körningsfel
CType-funktion Alla datatyper Utvidga eller begränsa konverteringen måste definieras mellan de två datatyperna Kastar InvalidCastException
DirectCast Alla datatyper En typ måste ärva från eller implementera den andra typen Kastar InvalidCastException
TryCast-operator Endast referenstyper En typ måste ärva från eller implementera den andra typen Returnerar ingenting

Exempel

I följande exempel visas två användningsområden för DirectCast, en som misslyckas vid körning och en som lyckas.

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)

I föregående exempel är Doublekörningstypen q . CType lyckas eftersom Double kan konverteras till Integer. Den första DirectCast misslyckas dock vid körning eftersom körningstypen inte Double har någon arvsrelation med Integer, även om det finns en konvertering. Den andra DirectCast lyckas eftersom den konverterar från typ Form till typ Control, från vilken Form ärver.

Se även