DirectCast – operátor (Visual Basic)
Zavádí operaci převodu typu na základě dědičnosti nebo implementace.
Poznámky
DirectCastnástroj pro převod Visual Basic rutin za běhu, takže může poskytovat o něco lepší výkon než při převodu na datový typ a CType z Object něj.
Klíčové slovo se používá podobně jako funkce DirectCast CType a klíčové slovo operátoru TryCast. Jako první argument zadáte výraz a jako druhý argument převedete výraz na typ . DirectCast vyžaduje vztah dědičnosti nebo implementace mezi datovými typy dvou argumentů. To znamená, že jeden typ musí dědit z druhého typu nebo ho implementovat.
Chyby a selhání
DirectCast generuje chybu kompilátoru, pokud zjistí, že neexistuje vztah dědičnosti nebo implementace. Absence chyby kompilátoru ale nezaručuje úspěšný převod. Pokud je požadovaný převod zužující, může selhat za běhu. Pokud k tomu dojde, modul runtime vyvolá InvalidCastException chybu.
Klíčová slova převodu
Porovnání klíčových slov převodu typu je následující.
| Klíčové slovo | Typy dat | Vztah argumentu | Selhání za běhu |
|---|---|---|---|
| CType – funkce | Všechny datové typy | Mezi těmito dvěma datovými typy musí být definován rozšiřující nebo zužující převod. | Vyvolá InvalidCastException |
DirectCast |
Všechny datové typy | Jeden typ musí dědit z druhého typu nebo ho implementovat. | Vyvolá InvalidCastException |
| TryCast – operátor | Pouze odkazové typy | Jeden typ musí dědit z druhého typu nebo ho implementovat. | Vrátí Nothing |
Příklad
Následující příklad ukazuje dvě použití , jedno, které selže DirectCast za běhu, a jedno, které je úspěšné.
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 je typ run-time q Double . CType úspěšně, Double protože lze převést na Integer . První chyba však v době běhu selže, protože typ běhu nemá žádný vztah dědičnosti s , i DirectCast Double když existuje Integer převod. Druhý je DirectCast úspěšný, protože převádí z typu Form na typ , ze kterého Control Form dědí.