typeof vs if... y el limpiado (clear) de controles
leyendo el post de JuanFco, Limpiar informacion de los controles (TextBox's) Rapidamente, y debido a que mi comentario se puso muy técnico, aproveche para hacer un post.
Cuanto tenía que hacer este tipo de cosas, limpiar masivamente usaba el mismo código pero con la comparación distinta, que me paso un amigo en un proyecto:
if ( c.GetType() == typeof(TextBox) ) {
c.Text = "";
}
Según la definición de "is" <http://msdn2.microsoft.com/es-es/library/scekt9xw(VS.80).aspx> realiza una conversión para comprobar si "c" es del tipo TextBox (según lo que interprete, salvo que el "y" sea conclusión y no conjunción :S). Parece que tiene más utilidad cuando vas a realizar conversiones y quieres comprobar si ese tipo es el que tu quieres.
Estuve probando los tiempos de diferencia y sólo en casos muy extremos hay ligera diferencia donde "is" toma unas milesimas de segundo más que "typeof".
Y cómo todos ustedes se deben estar preguntando entonces, que uso typeof o is?, pués ya iba a terminar de enviar el comentario, y lanzar una idea de sentido común, y era que is podría reconocer herencia de clases. Y nada le puse manos a la obra, y mi sentido común tenia razón, is reconoce herencia:
Falso, de toda falsedad: ( textBox1.GetType() == typeof(Control) )
Comprobado, is reconoce herencia: ( textBox1 is Control )
Saludos,
Post cruzado