gpt4 book ai didi

c# - 为什么.NET Framework 指定标准委托(delegate)(Action)?

转载 作者:行者123 更新时间:2023-11-30 20:01:00 25 4
gpt4 key购买 nike

为什么 .NET 框架指定标准委托(delegate)?声明新的委托(delegate)类型很简单,只需一行代码即可完成。

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

为什么他们要定义所有这些其他类型(Action、Action 等)?

这样做的目的是什么,有什么收获?

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

我想知道的另一件事是,他们接着定义了 17 个版本,除了它们采用不同数量的类型参数外,它们都是相同的。但为什么要停在 17 点呢?做出此类决定的依据是什么?

最佳答案

因为他们想为 TPL 公开一些委托(delegate)以及Linq , 所以他们创造了 Action , Action<T>Func<>委托(delegate)们。

Enumerable类使用Func<>在方法数量上。

Task类建立在 Func<> 之上以及Action<>仅限委托(delegate)。

当他们揭露 Linq在 FW 中,有必要声明像 Predicate 这样的委托(delegate)应该使用 Where 操作的委托(delegate)类型条款等等。您可以在一行中声明自己的委托(delegate)。但重点是您不能将您的委托(delegate)传递给框架方法,因为框架在编译时没有您的委托(delegate)。

因此框架开发人员决定在 .Net 框架本身中添加这些标准委托(delegate)。

注意:您可以将自己的委托(delegate)作为 System.Delegate 传递给“BCL”类型输入,他们可以使用 DynamicInvoke方法来调用它,但这是一种矫枉过正。在处理会降低性能的“ValueTypes”时,它需要装箱/拆箱,不仅如此 DynamicInvoke本身表现不佳的候选人。

关于c# - 为什么.NET Framework 指定标准委托(delegate)(Action)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19783014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com