C# - 操作委托(Action Delegate)

本文关键字:Action Delegate 操作 | 更新日期: 2023-09-12 17:40:14

Action是在 System 命名空间中定义的委托类型。操作类型委托与Func 委托相同,只是操作委托不返回值。换句话说,操作委托可以与具有 void 返回类型的方法一起使用。

例如,以下委托打印一个 int 值。

public delegate void Print(int val);
static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}
static void Main(string[] args)
{           
    Print prnt = ConsolePrint;
    prnt(10);
}

输出:

10

您可以使用操作委托,而不是定义上述打印委托,例如:

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}
static void Main(string[] args)
{
    Action<int> printActionDel = ConsolePrint;
    printActionDel(10);
}

可以使用 new 关键字或直接分配方法初始化操作委托:

Action<int> printActionDel = ConsolePrint;
//Or
Action<int> printActionDel = new Action<int>(ConsolePrint);

操作委托最多可以采用 16 个不同类型的输入参数。

还可以

将匿名方法分配给操作委托,例如:

static void Main(string[] args)
{
    Action<int> printActionDel = delegate(int i)
                                {
                                    Console.WriteLine(i);
                                };
    printActionDel(10);
}

输出:

10

Lambda 表达式也可以与操作委托一起使用:

static void Main(string[] args)
{
    Action<int> printActionDel = i => Console.WriteLine(i);
       
    printActionDel(10);
}

因此,可以使用任何不返回具有 Action 委托类型的值的方法。

Action和 func委托的优势

  1. 轻松快速地定义委托。
  2. 使代码简短。
  3. 整个应用程序的兼容类型。

注意:

  1. 操作委托与 func 委托相同,只是它不返回任何内容。返回类型必须为 void。
  2. 操作委托可以有 0 到 16 个输入参数。
  3. 操作委托可以与匿名方法一起使用,也可以与lambda表达式一起使用。