Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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 kulcsszót a DirectCastCType operátor és a TryCast Operátor kulcsszóhoz hasonlóan 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 operátor | 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.