gpt4 book ai didi

c# - 为什么要包含 Func/Func 作为参数?

转载 作者:行者123 更新时间:2023-11-30 13:39:15 26 4
gpt4 key购买 nike

我承认它们很有用,但我正在努力思考我实际上想要将 func 作为方法的参数的时间。

public void WeirdMethod(int myNumber, func op);

在设计和功能方面,有人可以向我解释一些我会考虑的情况吗? “可重用性”理论不会对我有太大帮助。现实世界的场景将是最好的。帮助我像你一样思考,哈哈。

这是我所知道的:

  • 这将允许我通过委托(delegate)
  • 这将允许我使用 lambda 表达式。

是的...

注意:我知道这个帖子会被关闭,因为没有“正确”的答案。但我认为刚才点击它的是“延迟计算”。

最佳答案

  • 将操作推迟到以后。一个非常实际的例子是推迟更改跟踪,直到对象树被完全填充。每种类型或存储库都可以告诉您它想要做什么,调用者可以决定何时实际执行。

  • 逻辑组合(如 Justin Niessner 所述)。

  • 抽象,例如(“这是一个有输入和输出的契约(Contract),但我不关心它的实现是什么,只要它履行契约(Contract)即可)。例如,您可以将“statusWriter”Func 传递给可能写入控制台、调试窗口、日志文件、数据库或什么都不做的方法。所有使用方法都知道它使用一个类型并在需要时调用它。

  • 沿着相同的思路,将 Func 传递给方法允许以抽象和简单的方式允许调用者定义 where 谓词。我经常使用此范例来支持将强类型过滤器应用于结果(不是谈论 LINQ to SQL,只是过滤调用者认为合适的信息列表)。

  • 优雅的函数范例,例如 this example它演示了使用匿名函数的递归。如果不能将一个函数传递给另一个函数(尤其是以缩写形式),这些构造将是冗长的/不可能的。

关于c# - 为什么要包含 Func/Func<T> 作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12647620/

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