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í.

Viz také