C# | Delegado de acción

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);
    }
}
Producción:

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);
    }
}
Producción:

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *