/ c#

MÉTODOS ANÓNIMOS

En general cuando se habla de anónimos en C# quiere decir que el compilador es el encargado de definir un nombre y por tanto este no es accesible desde nuestro código.

Los métodos anónimos surgen en la versión 2.0 del .NET framework con la versión 2.0 de C#, después en la versión 3.0 de C# y versiones posteriores las expresiones lambda (en uno de sus dos posibles usos) reemplazan a los métodos anónimos como la manera preferente de escribir código incrustado. Los métodos anónimos siguen siendo útiles debido a que poseen una cualidad que las expresiones lambda no tienen, que es el que puedan omitir la lista de parámetros permitiendo la versatilidad al delegado de tener diversas firmas.

El uso más frecuente de métodos anónimos es en el manejo de eventos y su declaración in situ del código del gestor del evento, en estos casos se pueden omitir los parámetros ya que el compilador hará algo conocido como inferencia de tipos.

A continuación crearemos un ejemplo sencillo del uso de  métodos anónimos realizando la suma de dos enteros.

anc3b3nimos

Usos

  • Los métodos anónimos permiten pasar a los delegados bloques de código como parámetro.

  • Son útiles para reducir la codificación de métodos que solo serán utilizados de forma única.

Restricciones

  • El ámbito de los parámetros de un método anónimo es el bloque que compone el bloque del método anónimo.

  • Es una mala práctica utilizar instrucciones de salto tales como goto, break o continue dentro del cuerpo del método anónimo para destinos fuera  del bloque y de igual forma de fuentes externas a destinos dentro del cuerpo del método.
  • No acepta parámetros out ni ref.
  • Una de las más notorias características de los métodos anónimos es la capacidad de acceder a variables de ámbito  externo, a las funciones que tienen esta cualidad se les denomina clausuras. Las clausuras son un recurso tradicional de la programación funcional que aparecieron por primera vez en lenguajes orientados a objetos como c#. A continuación modificaremos el código anterior  para presentar las características de acceso a variables externas y la inferencia de tipos del compilador.

anc3b3nimos2

Para ambas formas de implementación el resultado es el mismo.

resultado

Sin más por el momento me despido de ustedes. Saludos.

Saturnino Pimentel

Saturnino Pimentel

Microsoft MVP, consultor, blogger y conferencista. Saturnino es el cofundador de la comunidad de programadores c# y el meetup de c# de la ciudad de México además de participar con otras comunidades.

Read More

Suscríbete a la lista de correos :)

* indicates required