C# - Action 委托
Action
是在 System
命名空间中定义的委托类型。Action 类型的委托与 Func 委托相同,不同之处在于 Action 委托不返回值。换句话说,Action 委托可用于返回类型为 void 的方法。
例如,以下委托打印一个 int 值。
示例:C# 委托
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你可以使用 Action 委托来替代定义上面的 Print 委托,例如
示例:Action 委托
static void ConsolePrint(int i)
{
Console.WriteLine(i);
}
static void Main(string[] args)
{
Action<int> printActionDel = ConsolePrint;
printActionDel(10);
}
你可以使用 new 关键字初始化 Action 委托,或者直接分配一个方法
示例:Action 委托
Action<int> printActionDel = ConsolePrint;
Action<int> printActionDel = ConsolePrint;
//Or
Action<int> printActionDel = new Action<int>(ConsolePrint);
Action 委托最多可以接受 16 个不同类型的输入参数。
匿名方法也可以分配给 Action 委托,例如
示例:带 Action 委托的匿名方法
static void Main(string[] args)
{
Action<int> printActionDel = delegate(int i)
{
Console.WriteLine(i);
};
printActionDel(10);
}
输出
10Lambda 表达式也可以与 Action 委托一起使用
示例:带 Action 委托的 Lambda 表达式
static void Main(string[] args)
{
Action<int> printActionDel = i => Console.WriteLine(i);
printActionDel(10);
}
因此,你可以将任何不返回值的方法与 Action 委托类型一起使用。
Action 和 Func 委托的优点
- 轻松快速地定义委托。
- 使代码简洁。
- 在整个应用程序中类型兼容。
要记住的要点
- Action 委托与 Func 委托相同,不同之处在于它不返回任何内容。返回类型必须是 void。
- Action 委托可以有 0 到 16 个输入参数。
- Action 委托可以与匿名方法或 lambda 表达式一起使用。