在大多数情况下,委托和Func / Action是可以互换的,但有些情况下它们是不可互换的吗?能力方面是否存在细微差别?
(是的,在SO上有很多“行动与代表”,但没有人回答能力问题以及它们何时不可互换。)
“它们不可互换的情况”我的意思是你不能简单地将Func替换为相应的委托(并委托给相应的Func)。
答案 0 :(得分:1)
Func和Action根本不可互换
Func
和Action
都是代表
Func<T,TResult>
应始终返回值
Action<T>
不应该返回值
答案 1 :(得分:1)
正如Jon Skeet在评论中回答的那样,我错过了Action / Func实际上是委托的事实(我认为它是封装委托的类):
namespace System
{
public delegate TResult Func<in T, out TResult>(T arg);
}
因此代理和相应的Func / Action之间没有区别,因为Func / Action是委托。