📜  C#|行动代表

📅  最后修改于: 2021-05-29 21:24:28             🧑  作者: Mango

动作委托是内置的泛型类型委托。该委托使您不必定义下面的示例中所示的自定义委托,并使您的程序更具可读性和优化性。它在系统名称空间下定义。它最多可以包含1个输入参数,最多可以包含16个输入参数,并且不包含任何输出参数。 Action委托通常用于不包含任何返回值的方法,换句话说,Action委托与返回类型为void的那些方法一起使用。它也可以包含相同类型或不同类型的参数。

句法:

// 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);

在此,P,P1和P2是输入参数的类型,而arg1和agr2是Action委托封装的方法的参数。

示例:下面的程序说明了我们如何创建自定义委托。

// 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

示例:演示了Action委托的用法。

// 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 val = myfun;
        val(20, 5);
    }
}
输出:
15

说明:在上面的示例中,使用Action委托可以减少代码的大小,并使程序更具可读性。这里的动作委托包含两个输入参数。然后,我们直接将myfun方法分配给Action委托。

重要事项:

  • Action Delegates和函数 Delegates之间的唯一区别是Action Delegates不返回任何内容,即具有返回类型。
  • 动作委托也可以使用new关键字进行初始化。
    Action val = new Action(myfun);
  • 也可以通过直接分配给方法来初始化动作委托。
    Action val = myfun;
  • 您还可以将Action委托与匿名方法一起使用,如以下示例所示:

    例子:

    Action val = delegate(string str)
    {
        Console.WriteLine(str);
    };
    val("GeeksforGeeks");
    
  • 您还可以将Action委托与lambda表达式一起使用,如以下示例所示:

    例子:

    Action val = str = > Console.WriteLine(str);
    val("GeeksforGeeks");