Sdílet prostřednictvím


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í

CType – funkce (Visual Basic)

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

TryCast – operátor (Visual Basic)

Pouze typy odkazů

Jeden typ musí dědit z nebo provádět jiný typ

VrátíNothing (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í.

Viz také

Referenční dokumentace

Convert.ChangeType

Koncepty

Rozšíření a zúžení převodů (Visual Basic)

Implicitní a explicitní převody (Visual Basic)