Métodos anónimos en C# 2.0
Estoy seguro que usted recordará su primera clase de programación donde le enseñaron la manera de crear métodos e invocarlos. Pues bien, estos métodos que usted aprendió tienen una sintaxis que hacen prosible la invocación como la especificación de cierto parámetros para este. Por ejemplo:
public void miMetodo(int nro) {
Console.Write("’{0}’ ", (char)nro);
Console.Write("0x{0:X} ", nro);
Console.Write("{0} ", nro);
}
Hasta ahora todo es muy conocido. Hemos creado un método llamado miMetodo seguido de un parámetro entero para este. La manera de invocarlo usando un delegado es muy fácil , y eso lo sabe usted bien. Bueno, así como existe este método con nombre, también existe los recien conocidos Métodos Anónimos, que viene con C# 2.0 como parte de una de sus novedades de programación. Pues usted se preguntará ¿y que és un método anónimo? un método anónimo es justamente eso, aquel método que no tiene un nombre específico. Y ahora usted se preguntará ¿y cómo invoco los método anónimos?, pues buena pregunta, la respuesta es usando Delegados.
El detalle es que siempre hemos estado acostumbrados a nombrar las métodos, tanto aquellos que devuelven valores nulos o los que devuelven un cierto valor para su posterior uso, y esta novedad de Métodos anónimos en C# 2.0, viene a ser el tema de este post. Es por eso que paso a explicar lo concerniente a Métodos Anónimos usando Delegados.
Lo importante es que los métodos anónimos, reduce la sobrecarga de codificación al crear instancias de delegados sin tener que crear un método independiente. Un método anónimo es declarado con la palabra clave delegate seguido de una lista de parámetros. Las líneas de código para el método están dentro del par de llaves {}. Todo esto debe ser referenciado por un tipo delegate que tenga la misma firma que el método anónimo, es así que, la invocación de los métodos anónimos se realiza usando esta referencia. Vayamos con un ejemplo:
Lo primero que se debe hacer es declarar el delegado.
delegate void toString(Boolean b);
En esta función, debemos instanciar el delegado correspondiente e invocarlo.
static void Main(string[] args)
{
//referenciamos un delegate de tipo arriba definido.
toString ts; //declaramos un método anónimo usando delegado.
ts = delegate(Boolean b) { Console.WriteLine("\ntoString: {0}", b == true ? "Verdadero" : "Falso"); };
ts(true); //invocación del método anónimo usando delegado.
}
De esta manera explotaremos la nueva funcionalidad de los métodos anónimos. Para entender mejor aquí algunos ejemplos más. He aquí otra demostración. Ya sabéis lo que se hace primero:
delegate void printIntView(int valor);
Ahora se debe instanciar los delegados y los métodos anónimos. Esto es explicado dentro de las siguientes líneas de código.
static void Main(string[] args)
{
//creamos los delegados a partir de tipo definido printIntView
printIntView entero, hexa, oChar, EHC,HC, EC;
//otros métodos anónimos
entero=delegate(int nro) { System.Console.Write("’{0}’ ", (char)nro); };
hexa = delegate(int nro) { System.Console.Write("0x{0:X} ", nro); };
oChar = delegate(int nro) { System.Console.Write("{0} ", nro); };
Console.Write("\nentero: "); entero(128);
Console.Write("\n hexa: "); hexa(128);
Console.Write("\nChar: "); oChar(128);
EHC = entero + hexa + oChar; // callbacks
Console.Write("\nEHC: ");
EHC(128);//invocación
HC= EHC - entero;
Console.Write("\nHC: ");
HC(128);//invocación
EC = EHC - hexa;
Console.Write("\nEC: ");
HC(128); //invocación
Console.ReadLine();
}
Ya sabéis esto de los métodos anónimos, y espero que nuevamente este post sea de utilidad.
más información : http://msdn2.microsoft.com/es-es/library/0yw3tz5k.aspx
Percy Reyes.