gpt4 book ai didi

delegates - Func<> 委托(delegate)有什么了不起的?

转载 作者:行者123 更新时间:2023-12-03 10:30:54 24 4
gpt4 key购买 nike

对不起,如果这是基本的,但我试图在 .Net 3.5 上学习。

问题: Func<> 有 5 个重载吗?从外观上看,我仍然可以自己创建一个类似的委托(delegate),MyFunc<> 具有确切的 5 个重载甚至更多。

例如:public delegate TResult MyFunc<TResult>()以及各种重载的组合......

当我试图理解 Func<> 委托(delegate)并遇到以下情况时,这个想法出现了:

Func<int,int> myDelegate = (y) => IsComposite(10);

这意味着委托(delegate)具有一个 int 类型的参数和一个 int 类型的返回类型。有五种变体(如果您通过智能感知查看重载)。所以我猜我们可以有一个没有返回类型的委托(delegate)?

那么我是否有理由说 Func<> 没什么了不起,只是 .Net 框架中的一个示例,我们可以使用它,如果需要,创建自定义“func<>”委托(delegate)以满足我们自己的需要?

谢谢,

最佳答案

伟大在于建立共享语言以更好地沟通 .

不要为同一事物定义自己的委托(delegate)类型(委托(delegate)爆炸),而是使用框架提供的委托(delegate)类型。任何阅读您的代码的人都会立即掌握您要完成的工作。. 最大限度地减少“这段代码实际上在做什么?”的时间。
所以当我看到一个

  • 行动 = 一些只做某事但不返回输出的方法
  • 比较 = 比较两个相同类型的对象并返回一个 int 来指示顺序的方法
  • 转换器 = 将 Obj A 转换为等效的 Obj B
  • 事件处理程序 = 给定事件参数形式的某些输入的某个对象引发的事件的响应/处理程序
  • 功能 = 一些方法,它接受一些参数,计算一些东西并返回一个结果
  • 谓词 = 根据某些标准评估输入对象并将通过/失败状态返回为 bool

  • 除非这是我直接关注的领域,否则我不必深入挖掘。因此,如果您觉得您需要的委托(delegate)符合其中一项需求,请在推出自己的委托(delegate)之前使用它们。

    免责声明:我个人喜欢语言设计者的这一举动。

    反驳 :有时定义您的委托(delegate)可能有助于更好地传达意图。例如 System.Threading.ThreadStart超过 System.Action .所以这最终是一个判断电话。

    关于delegates - Func<> 委托(delegate)有什么了不起的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/319789/

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