📜  c# func vs action - C# (1)

📅  最后修改于: 2023-12-03 15:29:45.662000             🧑  作者: Mango

C# Func vs Action

在C#中,Func和Action是两个重要的委托类型。这两个类型都可用于表示具有签名的方法。然而,它们的不同之处在于它们的返回类型。

Func

Func表示具有指定的输入参数和返回值的方法委托。它有一个返回类型的类型参数。例如:

Func<int, int, int> add = (a, b) => a + b;
int result = add(2, 3);
// result = 5

在这个例子中,我们定义了一个Func类型的变量add。它接受两个int参数,并返回一个int。我们用Lambda表达式实现了它的方法体。我们可以看到,我们将add作为一个常规的方法调用,传递2和3作为参数,返回结果5。

Action

Action表示没有返回值的方法委托。它的类型参数是它所要代表的方法的参数列表的类型。例如:

Action<string> print = (message) => Console.WriteLine(message);
print("Hello World");
// 输出:Hello World

在这里,我们定义了一个Action类型的变量print。它接受一个string参数并返回void。我们用Lambda表达式实现了它的方法体,它简单地将一个字符串消息打印到控制台上。

总结

Func和Action是在C#中定义方法委托的两种主要方式。它们都可以用来传递方法作为参数,从而在运行时动态确定方法的执行方式。然而,它们的不同在于它们是否有返回值。利用Func和Action,程序员可以轻松地通过委托来实现“回调机制”。这可能是软件开发中最常用的编程模式之一。