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, která nevyvolá výjimku.
Poznámky
Pokud se pokus o převod nezdaří, CType a DirectCast oba vyvolá InvalidCastException chybu. To může nepříznivě ovlivnit výkon vaší aplikace.
TryCast vrátí hodnotu Nothing, takže místo toho, abyste museli zpracovat možnou výjimku, potřebujete pouze otestovat vrácený výsledek proti Nothing.
Klíčové slovo použijete TryCast stejným způsobem jako operátor CType a klíčové slovo DirectCast Operator . Jako první argument zadáte výraz a typ, který ho převede jako druhý argument.
TryCast funguje pouze u referenčních typů, jako jsou třídy a rozhraní. Mezi těmito dvěma typy vyžaduje vztah dědičnosti nebo implementace. To znamená, že jeden typ musí dědit nebo implementovat druhý typ.
Chyby a chyby
TryCast 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, TryCast vrátí hodnotu Nothing.
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 |
| Operátor DirectCast | Všechny datové typy | Jeden typ musí dědit nebo implementovat druhý typ. | Hází InvalidCastException |
TryCast |
Pouze odkazové typy | Jeden typ musí dědit nebo implementovat druhý typ. | Vrátí hodnotu Nothing. |
Příklad
Následující příklad ukazuje, jak používat TryCast.
Function PrintTypeCode(ByVal obj As Object) As String
Dim objAsConvertible As IConvertible = TryCast(obj, IConvertible)
If objAsConvertible Is Nothing Then
Return obj.ToString() & " does not implement IConvertible"
Else
Return "Type code is " & objAsConvertible.GetTypeCode()
End If
End Function