Nel .NET Framework 1.x per effettuare il
casting da un'oggetto (tipicamente string) ad un altro(datetime, integer, decimal altro) si è sempre usato il metodo
Parse dell'oggetto a cui si doveva convertire.
EsempioDateTime dataNascita = DateTime.Parse(txtDataNascita.text)
Il problema di questa conversione è che se non è possibile eseguire la conversione viene sollevata una eccezione con tutti i problemi del caso, ovvero gestire l'eccezione ma ancora peggio riduzioni delle prestazioni.
Per chi non lo sapesse bisogna usare con molta attenzione le
Exception perchè riducono di molto le prestazioni delle nostre applicazioni.
Con il
.NET Framework 2.0 è stato aggiunto un nuovo metodo il
TryParse che tenta di eseguire la conversione e se non è possibile eseguirla ritorna un
null senza sollevare nessuna exception.
C#DateTime dataCastata;
DateTime dataNascita;
if(DateTime.TryParse(txtDataNascita.text, out dataCastata)
{
dataNascita = dataCastata;
}
VB.NETDim dataCastata as DateTime;
Dim dataNascita as DateTime;
if(DateTime.TryParse(txtDataNascita.Text, ref dataCastata)
{
dataNascita = dataCastata
}
Funzionamento TryParse
Il metodo ritorna
true se riesce ad eseguire la conversione, il primo parametro è l'oggetto da castare, il secondo è l'oggetto da riempire castato che deve essere passato come riferimento. Il secondo parametro ritornerà un
null se la conversione ha avuto un esito negativo.
TryParse ha anche un
overload dove si può speficicare lo stile e la formattazione.
Conclusioni
Nel
.NET Framework 2.0 quindi bisogna usare
TryParse per ottimizzare le nostre applicazioni e per chi progetta controlli, classi tipizzate consiglio di implementare questo pattern per migliorare l’oggetto creato.