Sdílet prostřednictvím


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 TryCaststejný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

Viz také