TryCast
Aggiornamento: novembre 2007
Introduce un'operazione di conversione dei tipi che non genera un'eccezione.
Note
Se non riesce un tentativo di conversione, CType e DirectCast generano entrambi un errore InvalidCastException che può influenzare negativamente le prestazioni dell'applicazione. TryCast restituisce Nothing (Visual Basic). Pertanto, anziché gestire una possibile eccezione, sarà sufficiente testare il risultato restituito rispetto a Nothing.
L'uso della parola chiave TryCast è analogo a quello della funzione Funzione CType e della parola chiave DirectCast. Specificare un'espressione come primo argomento e un tipo in cui eseguire la conversione come secondo argomento. TryCast agisce solo su tipi di riferimento come classi e interfacce e richiede una relazione di ereditarietà o di implementazione tra i due tipi. Ciò significa che un tipo deve ereditare dall'altro tipo o implementarlo.
Condizioni di errore
Se non viene rilevata alcuna relazione di ereditarietà o implementazione, TryCast genera un errore del compilatore. L'assenza di errori del compilatore non garantisce tuttavia la riuscita della conversione. Se la conversione desiderata è verso un tipo di dati più piccolo, è possibile che l'operazione non riesca in fase di esecuzione. In tal caso, TryCast restituisce Nothing (Visual Basic).
Parole chiave di conversione
Di seguito è riportato un confronto tra le parole chiave di conversione dei tipi.
Parola chiave |
Tipi di dati |
Relazione degli argomenti |
Errore di runtime |
---|---|---|---|
Qualsiasi tipo di dati |
La conversione verso un tipo di dati più grande o più piccolo deve essere definita tra i due tipi di dati |
Genera InvalidCastException |
|
Qualsiasi tipo di dati |
Uno dei tipi deve ereditare dall'altro o implementarlo |
Genera InvalidCastException |
|
TryCast |
Solo tipi di riferimento |
Uno dei tipi deve ereditare dall'altro o implementarlo |
Restituisce Nothing (Visual Basic) |
Esempio
Nell'esempio riportato di seguito viene illustrato l'utilizzo di 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