DirectCast – operátor (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 CType – funkce (Visual Basic) a TryCast – operátor (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 |
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í.