TryCast – operátor (Visual Basic)
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 funkce CType a klíčové slovo Operátor directcastu. 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 převodu
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 |
---|---|---|---|
Funkce CType | 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. | Vyvolá InvalidCastException |
Operátor DirectCast | Všechny datové typy | Jeden typ musí dědit nebo implementovat druhý typ. | Vyvolá 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