猿教程 Logo

C# Action 委托

Action也是在System命名空间中定义的委托类型。 Action类型委托与Func委托相同,只是Action委托不返回值。 换句话说,一个Action委托可以和一个具有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

您可以使用Action委托,而不是定义上面的Print委托,例如:

相关实例:

static void ConsolePrint(int i)
{
    Console.WriteLine(i);
}

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

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

相关实例:

Action<int> printActionDel = ConsolePrint;

//Or

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

Action委托可以占用多达16个不同类型的输入参数。

匿名方法也可以分配给Action委托,例如:

相关实例:

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

    printActionDel(10);
}
运行结果:
10

Lambda表达式还可以与Action委托一起使用:

相关实例:

static void Main(string[] args)
{

    Action<int> printActionDel = i => Console.WriteLine(i);
       
    printActionDel(10);
}

因此,您可以用Action委托来使用任何不返回值的方法。


Action和Func委托的优点:

  1. 方便快捷地定义代理。
  2. 使代码短。
  3. 在整个应用程序中兼容类型。
要点
  1. Action委托与func委托相同,除了它不返回任何东西。 返回类型必须为void。 

  2. 动作委托可以有1到16个输入参数。 

  3. Action委托可以与匿名方法或lambda表达式一起使用。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/CSharp/csharp-action.html