Documentos de Académico
Documentos de Profesional
Documentos de Cultura
{
listaInt.Add(intN); //Se almacenara como objeto
Si realizáramos la compilación de este código el compilador nos dará un error en la línea, int
valor = listaInt[0];
Ya que un objeto no se puede convertir explícitamente a un tipo Int
Esto nos da pie a tener otro tipo de errores no contemplados dentro del desarrollo de
nuestra aplicación, ya que como vimos el ArrayList nos permite almacenar cualquier tipo de
dato llegando a tener un caso como este.
El verdadero problema es que esto no lo detectaremos hasta que nuestra aplicación este en
ejecución ya que es muy común que almacenemos nuestros datos a partir de objetos de
entrada, como textboxes, combos etc. sin hacer el Cast correspondiente al tipo de dato que
en su momento necesitemos utilizar
Aquí es donde se puede ver una utilización de generics al poder crear una clase que
funcionara como un Array pero al cual forzosamente es inicializado con el tipo de dato
especifico con el cual queramos trabajar.
Para este caso se creo una clase llamada ArrayGenerics (el código de la clase se muestra al
final) la cual será inicializada con el tipo de datos que necesitemos en nuestro caso es un
Integer (Int) el cual es especificado inmediatamente después del nombre de la clase , al ser
inicializada con un tipo especifico esta clase no admitirá ningún tipo de dato diferente al
especificado en nuestro caso solo admitirá tipos de datos Int
Si al ejemplo anterior quisieramos agregarle un tipo diferente, por ejemplo un string “3”
listaGen.Agregar(1);
listaGen.Agregar(2);
listaGen.Agregar(“3”);
El cual nos indica un mensaje de error el cual nos indica que no se puede convertir
explícitamente un tipo de dato string en un int, una de las ventajas es que este error nos lo
dara en tiempo de compilación con lo cual podremos siempre evitar excepciones en tiempo
de ejecución
Como mencionabamos, generic toma cualquier tipo de dato, en este caso utilizaremos la
misma clase pero ahora para crear un arreglo de controles TextBox.
listaGen.Agregar(new TextBox);
listaGen.Agregar(new TextBox);
listaGen.Agregar(new TextBox);
La única diferencia que tiene contra una clase “común” es la declaración de la misma, a
la cual se le incluye inmediatamente después del nombre de la clase la declaración de un
nombre de datos genérico en nuestro caso el cual cuando la clase sea instancía sera
reemplazado por el tipo especificado en ella.
ArrayGenerics<TextBox> listaGen = new ArrayGenerics<TextBox>();