推荐答案
在C#中,Action和Func都是预定义的委托类型,但它们的主要区别在于返回值类型:
- Action:用于表示没有返回值的方法。它可以接受0到16个输入参数。
- Func:用于表示有返回值的方法。它可以接受0到16个输入参数,并且最后一个泛型参数表示返回值的类型。
本题详细解读
Action 委托
Action委托用于封装没有返回值的方法。它可以接受0到16个输入参数。例如:
// 无参数的Action
Action printMessage = () => Console.WriteLine("Hello, World!");
printMessage();
// 带参数的Action
Action<string> printMessageWithParam = (message) => Console.WriteLine(message);
printMessageWithParam("Hello, C#!");Func 委托
Func委托用于封装有返回值的方法。它可以接受0到16个输入参数,并且最后一个泛型参数表示返回值的类型。例如:
// www.javascriptcn.com code example // 无参数的Func Func<int> getRandomNumber = () => new Random().Next(); int randomNumber = getRandomNumber(); Console.WriteLine(randomNumber); // 带参数的Func Func<int, int, int> addNumbers = (a, b) => a + b; int sum = addNumbers(5, 10); Console.WriteLine(sum);
主要区别
返回值:
Action没有返回值。Func有返回值,且最后一个泛型参数指定返回值的类型。
参数数量:
Action和Func都可以接受0到16个输入参数。
使用场景:
- 当你需要封装一个没有返回值的方法时,使用
Action。 - 当你需要封装一个有返回值的方法时,使用
Func。
- 当你需要封装一个没有返回值的方法时,使用
示例对比
// 使用Action
Action<string> logMessage = (message) => Console.WriteLine(message);
logMessage("This is an action.");
// 使用Func
Func<int, int, int> multiply = (x, y) => x * y;
int result = multiply(3, 4);
Console.WriteLine(result);通过以上示例可以看出,Action和Func的主要区别在于是否有返回值,以及如何使用它们来封装不同的方法。