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);
}
输出:
10Lambda 表达式也可以与操作委托一起使用:
static void Main(string[] args)
{
Action<int> printActionDel = i => Console.WriteLine(i);
printActionDel(10);
}
因此,可以使用任何不返回具有 Action 委托类型的值的方法。
Action和 func委托的优势
- 轻松快速地定义委托。
- 使代码简短。
- 整个应用程序的兼容类型。
注意:
- 操作委托与 func 委托相同,只是它不返回任何内容。返回类型必须为 void。
- 操作委托可以有 0 到 16 个输入参数。
- 操作委托可以与匿名方法一起使用,也可以与lambda表达式一起使用。