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