推荐答案
在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个输入参数,并且最后一个泛型参数表示返回值的类型。例如:
-- -------------------- ---- ------- -- -------- --------- --------------- - -- -- --- ---------------- --- ------------ - ------------------ -------------------------------- -- -------- --------- ---- ---- ---------- - --- -- -- - - -- --- --- - ------------- ---- -----------------------
主要区别
返回值:
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
的主要区别在于是否有返回值,以及如何使用它们来封装不同的方法。