为什么.NET框架指定标准委托(Action)?

ric*_*ard 2 .net c# delegates

为什么.NET框架指定了标准委托?声明一个新的委托类型很简单,可以在一行代码中完成.

public delegate void Something<T>(T obj);

为什么他们定义所有这些其他类型(行动,行动等)?

目的是什么以及由此获得什么?

http://msdn.microsoft.com/en-us/library/system.action.aspx

我想知道的另一件事是他们继续定义17个版本,除了它们采用不同数量的类型参数之外,它们都是相同的.但为什么要停在17岁?是什么通知这种决定?

Sri*_*vel 7

因为他们想肯定是揭露一些委托的TPL还有Linq,所以他们创造Action,Action<T>Func<>与会代表.

可枚举类使用Func<>多种方法.

任务类是建立在顶部Func<>以及Action<>唯一代表.

当他们公开LinqFW时,有必要声明代表就像委托一样Predicate应该使用Where子句等等.您可以在一行中声明自己的代理.但关键是你不能将你的委托传递给框架方法,因为框架在编译时没有你的委托.

因此,框架开发人员决定在.Net框架中添加这些标准委托.

注意:您可以将自己的委托作为System.Delegate类型传递给"BCL"类型,并且可以使用DynamicInvoke方法来调用它,但这是一种过度杀伤.当处理降低性能的"ValueTypes"时,它需要装箱/拆箱,而不仅仅是DynamicInvoke本身性能差的候选者.