C# 中的 Action 和 Func 委托

作者 : 慕源网 本文共997个字,预计阅读时间需要3分钟 发布时间: 2021-12-6 共146人阅读

介绍

在本文中,我们将学习 C# 中的 Action 和 Func 委托,但在此之前先了解什么是委托

要涵盖的主题,

  1. 什么是委托
  2. Action 委托
  3. Func 委托

什么是委托?

委托是一种类型安全的函数指针,可用于引用与委托具有相同签名的另一个方法。“delegate”关键字用于声明委托,委托用于定义回调方法并提供事件处理。委托可以声明为独立对象或嵌套在类中。

Func 和 Action 委托之间的主要区别在于,前者用于返回值的委托,而后者可用于没有返回值的委托。

Action 委托

内置的泛型类型委托是动作委托。此委托消除了定义自定义委托的需要,如下面的示例所示,并提高了应用程序的可读性和优化。它位于 System 命名空间中。

它可以有最少 1 个和最多 16 个输入参数,但没有输出参数。Action 委托通常与没有返回值的方法或具有 void 返回类型的方法一起使用。它还可以具有相同类型的参数以及其他类型的参数。

让我们定义一个方法,它有 3 个输入参数并返回相加的值。

Program.cs

static void AddNums2(int x, float y, double z)
{
    Console.WriteLine(x + y + z);
}
static void Main()
{
    Action<int,float,double> action = AddNums2;
    action.Invoke(100, 45.6f, 165.986);
}

Func 委托

Func 是语言附带的泛型类型委托。此委托无需像前面的示例中演示的那样定义自定义委托,从而使您的程序更易于理解和高效。因为 Func 是一个通用委托,所以它可以在 System 命名空间中找到。

它可以有最少 0 个和最多 16 个输入参数,但只有一个输出参数。out 参数是返回类型并用于结果,是 Func 委托的最后一个参数。

static double AddNums1(int x, float y, double z)
{
    return x + y + z;
}
static void Main()
{
    Func<int,float,double,double> func = AddNums1;
    double result = func.Invoke(100, 34.5f, 193.667);
    Console.WriteLine(result);
}

让我们运行应用程序并查看控制台窗口中的输出

C# 中的 Action 和 Func 委托

结论

上面的文章详细介绍了 Action 和 Func Delegates 以及如何使用它和 C# 中的所有可用选项。


慕源网 » C# 中的 Action 和 Func 委托

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录