Brad Abrams in un recente blog fa notare come l'utilizzo di As puo' evitare inutili casts.
Esempio: Supponiamo vogliate scrivere "ok" in tutte le textboxes presenti in un form.
Metodo1
foreach (Control ctrl in this.Controls)
{
TextBox txt = ctrl as TextBox; (*)
if (txt !=null) txt.Text="ok";
}
Metodo2
foreach (Control ctrl in this.Controls) //(*)
{
if (ctrl is TextBox) //(**)
{
TextBox txt=(TextBox)ctrl;
txt.Text="ok";
}
}
Entrambe funzionano: Ma quale e' la differenza?
La seconda da origine a 2 casts (segnati con *) mentre la prima soluzione, grazie all'uso di As, solamente 1.
Non e' un segreto che "As" e' una delle cose che invidio a C#, fortunatamente "rumors" dicono che forse anche i programmatori VB.NET avranno la relativa controparte.