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 e DirectCast generano entrambi un errore InvalidCastException. Ciò può influire negativamente sulle prestazioni dell'applicazione. TryCast restituisce Nothing, per cui, invece di dover gestire una possibile eccezione, è necessario testare solo il risultato restituito in Nothing.

Si usa la parola chiave TryCast allo stesso modo in cui si usa la funzione CType e la parola chiave DirectCast Operator. Specificare un'espressione come primo argomento e un tipo in cui convertirla 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 operazioni non riuscite

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, TryCast restituisce Nothing.

Parole chiave di conversione

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

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

Esempio

Nell'esempio riportato di seguito 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

Vedi anche