Operatore TryCast (Visual Basic)
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 InvalidCastExceptionCiò può influire negativamente sulle 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 (Visual Basic) e della parola chiave Operatore DirectCast (Visual Basic).Viene specificata un'espressione come primo argomento e un tipo per la relativa conversione come secondo argomento.TryCast opera solo sui tipi di riferimento, quali 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