Condividi tramite


Operatore TryCast (Visual Basic)

Introduce un'operazione di conversione dei tipi che non genera un'eccezione.

Osservazioni:

Se un tentativo di conversione ha esito negativo CType ed DirectCast entrambi generano un InvalidCastException errore. Ciò può influire negativamente sulle prestazioni dell'applicazione. TryCast restituisce Nothing, in modo che invece di dover gestire una possibile eccezione, è necessario testare solo il risultato restituito su Nothing.

Si usa la TryCast parola chiave allo stesso modo in cui si usano l'operatore CType e la parola chiave DirectCast Operator . Specificare un'espressione come primo argomento e un tipo in cui convertirlo come secondo argomento. TryCast opera solo su tipi di riferimento, ad esempio classi e interfacce. Richiede una relazione di ereditarietà o implementazione tra i due tipi. Ciò significa che un tipo deve ereditare o implementare l'altro.

Errori e errori

TryCast genera un errore del compilatore se rileva che non esiste alcuna relazione di ereditarietà o implementazione. Tuttavia, la mancanza di un errore del compilatore non garantisce una conversione corretta. Se la conversione desiderata è ridotta, potrebbe non riuscire in fase di esecuzione. In questo caso, restituisce TryCastNothing.

Parole chiave di conversione

Di seguito è riportato un confronto tra le parole chiave di conversione dei tipi.

Parola chiave Tipi di dati Relazione tra argomenti Errore di runtime
Operatore CType Qualsiasi tipo di dati È necessario definire una conversione verso un tipo di dati più esteso o verso un tipo di dati più piccolo Getta InvalidCastException
Operatore DirectCast Qualsiasi tipo di dati Un tipo deve ereditare o implementare l'altro tipo Getta InvalidCastException
TryCast Solo tipi di riferimento Un tipo deve ereditare o implementare l'altro tipo Restituisce Nothing

Esempio

Nell'esempio seguente viene illustrato come usare 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

Vedere anche