Delegar la ejecución de un proceso con ayuda de Action y de un método anónimo
En esta entrada voy a explicar de forma general como ejecutar en C# un proceso con ayuda de Action<T>, y como hacerlo también con un método anónimo.
Se trata de una entrada dirigida especialmente para programadores nóveles o con conocimientos básicos en C#, y representa una forma elegante y cómoda de ejecutar acciones tal y como veremos a continuación.
En ambos ejemplos, calcularemos el cuadrado de un valor que va de 1 a 7, y mostraremos la información con ayuda de Linq.
En el primer ejemplo, delegamos en Action<T> la acción de calcular el cuadrado de los valores.
En el segundo ejemplo, usaremos un método anónimo para mostrar la misma información.
Cuando usemos Action<T>, no estaremos declarando explícitamente Action<T> tal y como veremos.
De hecho, lo que haremos es delegar la acción, es decir, pasar una referencia al método que ejecutaremos.
Para el primer ejemplo, el código de uso de Action<T> quedará de la siguiente forma:
namespace ActionAndAnonymousMethod { using System; using System.Linq; public class Program { public static void Main(string[] args) { Console.WriteLine("Started"); int[] elements = new int[] { 1, 2, 3, 4, 5, 6, 7 }; elements.ToList().ForEach(ShowPowValues); Console.WriteLine("Press any key to close"); Console.ReadKey(); } private static void ShowPowValues(int value) { Console.WriteLine($"{value} is {Math.Pow(value, 2)}"); } } }
Para el segundo ejemplo, el código de uso de un método anónimo variará de la siguiente manera:
namespace ActionAndAnonymousMethod { using System; using System.Linq; public class Program { public static void Main(string[] args) { Console.WriteLine("Started"); int[] elements = new int[] { 1, 2, 3, 4, 5, 6, 7 }; elements.ToList().ForEach(delegate (int value) { Console.WriteLine($"{value} is {Math.Pow(value, 2)}"); }); Console.WriteLine("Press any key to close"); Console.ReadKey(); } } }
Como vemos, ambos ejemplos son muy parecidos.
No existe a priori una forma idónea de llevar a cabo esta tarea, simplemente depende de nuestro interés.
¡Happy Coding!