c# - 为什么我们需要 C# 委托(delegate)

标签 c# delegates

我似乎一直不明白为什么我们需要委托(delegate)? 我知道它们是保存方法引用的不可变引用类型,但为什么我们不能直接调用方法,而不是通过委托(delegate)调用它?

谢谢

最佳答案

简单的回答:需要执行操作的代码在编写时不知道要调用的方法。如果您在编译时知道要调用哪个方法,则只能直接调用该方法,对吗?所以如果你想抽象出“在适当的时间执行 Action X”的想法,你需要一些 Action 的表示,这样调用 Action 的方法就不需要提前知道确切的实现。

例如:

  • Enumerable.Select 在 LINQ 中无法知道您要使用的投影,除非您告诉它
  • Button 的作者不知道当用户点击它时想要什么 Action
  • 如果一个新线程只做一件事,那就太无聊了......

这可能有助于您将委托(delegate)视为单一方法接口(interface),但具有许多语言语法以使其易于使用,并且对异步执行和多播提供时髦的支持。

关于c# - 为什么我们需要 C# 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284493/

相关文章:

c# - 我们可以在.Net中使用基于JAVA的drools规则吗

c# - 当数据可以包含逗号时在逗号上拆分字符串

iphone - delegate 在 xcode ios 项目中到底做了什么?

swift - 如果我有两个 TextView ,如何检查 NSTextView 何时更改?

iphone - dealloc 的行为非常奇怪 - 没有被调用

objective-c - AppDelegate 和 main.m 的关系

c# - Predicates 或 Actions 是否具有任何其他属性或特性以将它们与 Funcs 区分开来?

c# - 通用 Windows 应用程序 (xaml) 中的广告中介

c# - 从数据库填充菜单

c# - .Net 图表将日期显示为一周中的几天