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 Object
való 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 DirectCast
mutatja 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.