Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Zavádí operaci převodu typu na základě dědičnosti nebo implementace.
Poznámky
DirectCast nepoužívá pomocné rutiny za běhu jazyka Visual Basic pro převod, takže může poskytovat poněkud lepší výkon než CType při převodu na datový typ a z datového typu Object.
Klíčové slovo se podobá DirectCast způsobu použití CType – operátor a klíčové slovo TryCast – operátor . Jako první argument zadáte výraz a typ, který ho převede jako druhý argument.
DirectCast vyžaduje vztah dědičnosti nebo implementace mezi datovými typy těchto dvou argumentů. To znamená, že jeden typ musí dědit nebo implementovat druhý typ.
Chyby a chyby
DirectCast generuje chybu kompilátoru, pokud zjistí, že neexistuje žádný vztah dědičnosti nebo implementace. Nedostatek chyby kompilátoru ale nezaručuje úspěšný převod. Pokud se požadovaný převod zužuje, může selhat za běhu. Pokud k tomu dojde, modul runtime vyvolá InvalidCastException chybu.
Klíčová slova pro převod
Porovnání klíčových slov převodu typů je následující.
| Klíčové slovo | Datové typy | Relace argumentů | Selhání za běhu |
|---|---|---|---|
| CType – operátor | Všechny datové typy | Mezi těmito dvěma datovými typy musí být definován rozšiřující nebo zúžený převod. | Hází InvalidCastException |
DirectCast |
Všechny datové typy | Jeden typ musí dědit nebo implementovat druhý typ. | Hází InvalidCastException |
| TryCast – operátor | Pouze odkazové typy | Jeden typ musí dědit nebo implementovat druhý typ. | Vrátí hodnotu Nothing. |
Příklad
Následující příklad ukazuje dvě použití DirectCast, jeden, který selže za běhu a jeden, 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 qtyp běhu typu Double .
CType úspěšně, protože Double lze převést na Integer. První DirectCast selže v době běhu, protože typ Double běhu nemá žádný vztah dědičnosti s Integer, i když existuje převod. Druhá DirectCast je úspěšná, protože se převede z typu Form na typ Control, ze kterého Form dědí.