El delegado de acción es un delegado de tipo genérico incorporado. Este delegado le evita definir un delegado personalizado como se muestra en los ejemplos a continuación y hace que su programa sea más legible y optimizado. Se define en el espacio de nombres del sistema . Puede contener un mínimo de 1 y un máximo de 16 parámetros de entrada y no contiene ningún parámetro de salida. El delegado de acción generalmente se usa para aquellos métodos que no contienen ningún valor de retorno, o en otras palabras, el delegado de acción se usa con aquellos métodos cuyo tipo de retorno es nulo. También puede contener parámetros del mismo tipo o de diferentes tipos.
Sintaxis:
// One input parameter public delegate void Action < in P > (P obj); // Two input parameters public delegate void Action < in P1, in P2 >(P1 arg1, P2 arg2);
Aquí, P, P1 y P2 son el tipo de los parámetros de entrada y arg1 y agr2 son los parámetros del método que encapsula el delegado de acción.
Ejemplo: El siguiente programa ilustra cómo creamos un delegado personalizado.
// C# program to illustrate delegates using System; class GFG { // Declaring the delegate public delegate void my_delegate(int p, int q); // Method public static void myfun(int p, int q) { Console.WriteLine(p - q); } // Main method static public void Main() { // Creating object of my_delegate my_delegate obj = myfun; obj(10, 5); } }
5
Ejemplo: Demuestra el uso del delegado de Acción.
// C# program to illustrate Action delegates using System; class GFG { // Method public static void myfun(int p, int q) { Console.WriteLine(p - q); } // Main method static public void Main() { // Using Action delegate // Here, Action delegate // contains two input parameters Action<int, int> val = myfun; val(20, 5); } }
15
Explicación: en el ejemplo anterior, el uso del delegado de acción reduce el tamaño del código y hace que el programa sea más legible. Aquí el delegado de acción contiene dos parámetros de entrada. Y asignamos directamente el método myfun al delegado de Acción.
Puntos importantes:
- La única diferencia entre los delegados de acción y los delegados de función es que los delegados de acción no devuelven nada, es decir, tienen un tipo de devolución nulo .
- Un delegado de acción también se puede inicializar con la nueva palabra clave.
Action<int> val = new Action<int>(myfun);
- Un delegado de acción también se puede inicializar asignándolo directamente a un método.
Action<int> val = myfun;
- También puede usar un delegado de acción con un método anónimo como se muestra en el siguiente ejemplo:
Ejemplo:
Action<
string
> val =
delegate
(
string
str)
{
Console.WriteLine(str);
};
val(
"GeeksforGeeks"
);
- También puede usar un delegado de acción con las expresiones lambda como se muestra en el siguiente ejemplo:
Ejemplo:
Action<
string
> val = str = > Console.WriteLine(str);
val(
"GeeksforGeeks"
);
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA