Ejemplo de Generics en C# 2.0

Vamos a ver una de las nuevas características de C# 2.0.

A medida que los proyectos son mas complicados, los desarrolladores necesitamos incrementar de la mejor manera la reutilización y personalizacion del Software. Para conseguir una alto nivel de reutilización de código, los desarrolladores podemos utilizar esta característica llamada Generics.Usando Generics, podemos crear clases templates que soporten cualquier tipo. Cuando instanciamos la clase, especificamos el tipo que queremos usar, y desde este punto, nuestro objeto es creado para el tipo que nosotros elegimos.

Veamos un ejemplo de como crear una clase genérica en C# 2.0

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;namespace PruebaGenerics

{

public class

MyCustomList<MYTYPE>

{
private ArrayList _mList= new ArrayList();

public MYTYPE this[int index]
{
get
{
return (MYTYPE)_mList[index];
}
set
{
_mList[index] = value;
}
}

public int Add(MYTYPE value)
{
return _mList.Add(value);
}

public void Remove(MYTYPE value)
{
_mList.Remove(value);
}
}
}







Aquí, MyCustomList es creada en un ArrayList. Pero estos métodos e indexaciones son fuertemente tipeadas, es un contenedor para cualquier tipo que tu elijas cuando tu creas la clase. Este contenedor es definido entre signos "< >" después del nombre de la clase. Ahora vemos como crear una instancia de la clase MyCustomList.




using System;
using System.Collections.Generic;
using System.Text;
using PruebaGenerics;namespace GenericsConsole

{

class Program
{
static void Main(string[] args)
{
MyCustomList<int> lEnteros = new MyCustomList<int>();
lEnteros.Add(23);
Console.WriteLine("lista con entero: "+lEnteros[0]);

MyCustomList<string> lString = new MyCustomList<string>();
lString.Add("Te gusto?");
Console.WriteLine("lista con string: "+ lString[0]);

Console.ReadKey();
}
}
}


Lo que hice fue agregar un nuevo proyecto de consola a la solución para probar la clase MyCustomList. Después hice dos declaraciones de la clase, una instancia para almacenar enteros "lEnteros" y otra para string "lString", como podemos ver solo le indicamos entre "< > " el tipo de datos que sera soportado y así podemos utilizar la misma clase para ambos casos.......

0 comentarios:

 

©2009 _Sebastian | Template Blue by TNB