25 de noviembre de 2009

C# Métodos Anónimos o Anonymous Methods.

¿Que son los métodos anónimos? ¿Como usarlos? ¿Donde ver un ejemplo práctico? Si quieres aclarar alguna de estas preguntas, estas en el artículo indicado.  Explicaremos mediante ejemplos simples y prácticos como, donde y cuando usar los métodos anónimos.

Los métodos anónimos (Anonymous Methods) son una de las novedades que se incorporaron en la versión de C# 2.0. Y están concebidos para simplificar la definición de eventos, especialmente cuando son pocas las líneas asociadas a estos eventos.

Pero como siempre veamos un ejemplo de uso de un método anónimo para comprenderlos mejor:

Métodos Anónimos, Ejemplos

El ejemplo que explicaremos a continuación no tiene demasiado sentido pero lo usaremos para poder comprender mejor los métodos anónimos.

En nuestro ejemplo tendremos una pagina web que contendrá 2 botones y un label, asociaremos al evento click de cada botón un método anónimo, pero veamos primero el código aspx:

<div>
  <asp:Button ID="btnMetodoAnonimo1" runat="server" Text="M. Anónimo 1" />
  <asp:Button ID="btnMetodoAnonimo2" runat="server" Text="M. Anónimo 2" />
  <br /><br />
  <asp:Label ID="lblMetodoAnonimo" runat="server"></asp:Label>
</div>

Veamos ahora el código C#, que es donde definiremos los métodos anónimos que es el objetivo de este post:

protected void Page_Load(object sender, EventArgs e)
{
  //Definamos el método anónimo y asociémoslo al evento click
  btnMetodoAnonimo1.Click +=
   delegate { lblMetodoAnonimo.Text = "Hemos hecho click en el botón M.Anónimo 1."; };
 
  //Definamos el método anónimo y asociémoslo al evento click
  btnMetodoAnonimo2.Click +=
   delegate (object objSender, EventArgs evArg) {lblMetodoAnonimo.Text=evArg.ToString(); };
}

En el código expuesto hemos definido un método anónimo que asociamos al delegado del evento click. Otra forma de haber hecho esto mismo sin usar métodos anónimos, seria:

btnMetodoAnonimo1.Click += new System.EventHandler(btnMetodoAnonimo1_Click);
 
private void btnMetodoAnonimo1_Click(object sender, System.EventArgs e)
{
  lblMetodoAnonimo.Text = "Hemos hecho click en el botón M.Anónimo 1.";
}

Al comparar los códigos y las formas de lograr el mismo objetivo, te percataras que es mucho mas simple hacerlo usando métodos anónimos, aunque he de reconocer que es menos comprensible la lectura del código. Pero si los usamos nos evitamos incluir toda la declaración de un método para algo tan simple; y es aquí donde son prácticos los métodos anónimos. La diferencia entre ambas técnicas es que ahora no nos hace falta definir una función, lo hace automáticamente por nosotros el compilador a la hora de crear el ejecutable.

Nota: Un método anónimo nos permite definir una función de manera implícita, sin necesidad de declararla.


Nota: En versiones de C# anteriores a la versión 2.0, la única manera de declarar un delegado era utilizar métodos con nombre. C# 2.0 introdujo los métodos anónimos, mientras que, en C# 3.0 y versiones posteriores, las expresiones lambda reemplazan a los métodos anónimos como la manera preferente de escribir código insertado. No obstante, la información sobre los métodos anónimos de este tema también se aplica a las expresiones lambda.

Artículos Relacionados: