为什么.NET框架指定了标准委托?声明一个新的委托类型很简单,可以在一行代码中完成.
public delegate void Something<T>(T obj);
为什么他们定义所有这些其他类型(行动,行动等)?
目的是什么以及由此获得什么?
http://msdn.microsoft.com/en-us/library/system.action.aspx
我想知道的另一件事是他们继续定义17个版本,除了它们采用不同数量的类型参数之外,它们都是相同的.但为什么要停在17岁?是什么通知这种决定?
因为他们想肯定是揭露一些委托的TPL还有Linq,所以他们创造Action,Action<T>和Func<>与会代表.
可枚举类使用Func<>多种方法.
任务类是建立在顶部Func<>以及Action<>唯一代表.
当他们公开LinqFW时,有必要声明代表就像委托一样Predicate应该使用Where子句等等.您可以在一行中声明自己的代理.但关键是你不能将你的委托传递给框架方法,因为框架在编译时没有你的委托.
因此,框架开发人员决定在.Net框架中添加这些标准委托.
注意:您可以将自己的委托作为System.Delegate类型传递给"BCL"类型,并且可以使用DynamicInvoke方法来调用它,但这是一种过度杀伤.当处理降低性能的"ValueTypes"时,它需要装箱/拆箱,而不仅仅是DynamicInvoke本身性能差的候选者.