Operátor DirectCast (Visual Basic)
Uvádí typ konverze na základě dědičnosti nebo provádění.
Poznámky
DirectCastnepoužívá Pomocník spuštění rutiny pro převod tak trochu může poskytnout lepší výkon než Visual Basic CType při převodu z typu dat a Object.
Použití DirectCast podobným způsobem pomocí klíčového slova Funkce CType (Visual Basic) a Operátor TryCast (Visual Basic) klíčové slovo.Můžete zadat výraz, jako první argument a typ, který chcete převést na jako druhý argument.DirectCastvyžaduje vztahu dědičnosti nebo provádění mezi datovými typy dva argumenty.To znamená, že jeden typ musí dědit z nebo provádět ostatní.
Chyby a chyby
DirectCastzjistí, že neexistuje žádný vztah dědičnosti nebo provádění, vygeneruje se chyba kompilátoru.Ale nedostatek chyba kompilátoru nezaručuje úspěšné převodu.Požadovaný převod je zúžení, pravděpodobně nezdaří v době spuštění.V tomto případě vyvolá modul runtime InvalidCastException chyba.
Klíčová slova pro převod
Porovnání klíčových slov typu převodu je následující.
Klíčové slovo |
Typy dat |
Argument vztah |
Chyba spuštění |
Všechny datové typy |
Rozšíření nebo zúžení převodu musí být definována mezi dvěma datovými typy |
VyvoláInvalidCastException |
|
DirectCast |
Všechny datové typy |
Jeden typ musí dědit z nebo provádět jiný typ |
VyvoláInvalidCastException |
Pouze typy odkazů |
Jeden typ musí dědit z nebo provádět jiný typ |
VrátíNic (Visual Basic) |
Příklad
Následující příklad ukazuje použití dvou DirectCast, úspěšný, dojde k chybě za běhu a jeden.
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)
V předchozím příkladu typu run-time q je Double.CTypezdaří, protože Double lze převést na Integer.Však první DirectCast za běhu se nezdaří, protože typu run-time Double nemá žádný vztah dědičnosti s Integer, i když existuje převod.Druhý DirectCast zdaří, protože ji převede z typu Form k zadání Control, ze kterého Form dědí.