Sdílet prostřednictvím


Operátor DirectCast (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 Funkce CType (Visual Basic) a Operátor TryCast (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í

Funkce CType (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

Operátor TryCast (Visual Basic)

Pouze typy odkazů

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

VrátíNic (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šiřování a zužující převody (Visual Basic)

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