viernes 1 de agosto de 2008

Nuestro Viejo amigo ArrayList

Si bien el Framework 2.0 trae un nuevo "paquete" de clases llamadas Colecciones genéricas (System.Colecctions.Generic), podríamos seguir utilizando nuestro querido ArrayList obteniendo de él no objetos de la clase "object" sino realmente objetos de la clase que incluímos en esa colección. Por ejemplo si quisiéramos recorres un ArrayList en el que se han agregado instancias de la clase Persona y sin necesidad de "castear" podríamos utilizar el foreach que realiza un upcasting en forma directa. Por ejemplo:
public void mostrarPersonas (ArrayList lista)
{
foreach(Persona per in lista)
System.Writeline(per.darNombre());
}

Utilización de Colecciones Genéricas en C#


Supongamos tener en nuestra capa de Reglas de Negocio (RN) una clase llamada TipoInfo y luego deseamos realizar una lista de varios objetos de esa clase y mostrarlos por pantalla. El código sería:

using System;
using System.Collections.Generic;
using System.Text;
namespace RN
{
public class TipoInfo
{
int dato;
public int Dato
{
get { return dato; }
set { dato = value; }
}
}
}

Cada Nodo de la lista genérica es de la clase NodoL. Realicé la lista genérica con esta clase ya que así definida se puede reutilizar para definir otras estructuras de datos como ser listas, pilas o colas

using System;
using System.Collections.Generic;
using System.Text;
namespace RN
{
public class NodoL:TNodo
{
NodoL sig;
public NodoL Sig
{
get { return sig; }
set { sig = value; }
}
public NodoL()
: base()
{
sig = null;
}
}
}
Para cargar una lista genérica con objetos de la clase TipoInfo debemos:
1) Declarar la variable.
2) Instanciar el objeto al que va a refernciar la variable.
3) Agregar los objetos de la clase TipoInfo que deseamos
El código sería

List lista = new List(); // 1 y 2) Declaro la variable e instancio la clase
for (int i = 0; i <>
{
d = new TipoInfo();
d.Dato = i;
lista.Add(d);
}

Para mostrar el contenido de la lista solo debemos recorrerla y obtenemos cada objeto allí almacenado:
foreach (TipoInfo x in lista)
Console.WriteLine(x.Dato);

lunes 28 de julio de 2008

ArrayList

En el namespace System.Collections encontramos la clase ArrayList. Esta clase permite almacenar objetos y recuperarlos como object.
En el namespace System.Collections.Generic, la clase List permite almacenar objetos de la clase T y recuperar objetos de la clase T.
Vea System.Collections vs. System.Collections.Generic