DirectCast operátor (Visual Basic)

Típuskonvertálási műveletet vezet be öröklés vagy megvalósítás alapján.

Megjegyzések

DirectCast nem használja a Visual Basic futásidejű segédprogramokat az átalakításhoz, így valamivel jobb teljesítményt biztosíthat, mint CType az adattípusra és az adattípusból Objectvaló konvertáláskor.

A CType függvény és a DirectCast TryCast Operátor kulcsszóhoz hasonló kulcsszót használja. Első argumentumként egy kifejezést és egy második argumentummá alakítandó típust kell megadnia. DirectCast a két argumentum adattípusai közötti öröklési vagy megvalósítási kapcsolatot igényel. Ez azt jelenti, hogy az egyik típusnak a másiktól kell örökölnie vagy implementálnia.

Hibák és hibák

DirectCast fordítási hibát generál, ha azt észleli, hogy nincs öröklési vagy megvalósítási kapcsolat. A fordítóhibák hiánya azonban nem garantálja a sikeres átalakítást. Ha a kívánt átalakítás szűkül, futásidőben meghiúsulhat. Ha ez történik, a futtatókörnyezet hibát jelez InvalidCastException .

Konverziós kulcsszavak

A típuskonvertálási kulcsszavak összehasonlítása a következő.

Kulcsszó Adattípusok Argumentumkapcsolat Futásidejű hiba
CType függvény Bármilyen adattípus A két adattípus közötti szélesítést vagy szűkítést kell definiálni Dob InvalidCastException
DirectCast Bármilyen adattípus Az egyik típusnak örökölnie vagy implementálnia kell a másik típust Dob InvalidCastException
TryCast operátor Csak referenciatípusok Az egyik típusnak örökölnie vagy implementálnia kell a másik típust Semmit nem ad vissza

Példa

Az alábbi példa a futtatáskor meghiúsuló és a sikeres műveletek két használatát DirectCastmutatja be.

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)

Az előző példában a futtatási idő típusa q a következő Double. CType sikeres, mert Double átalakítható a következőre Integer: . Az első DirectCast azonban futásidőben meghiúsul, mert a futásidejű Double típus nem rendelkezik öröklési kapcsolattal Integer, annak ellenére, hogy létezik átalakítás. A második DirectCast sikeres, mert típusról típusra FormControlkonvertálja azt, amelytől Form öröklődik.

Lásd még