c# - 委托(delegate)大会的主要流程是什么?

标签 c# delegates

引入委托(delegate)的主要原因是什么,以及它是哪种类型问题的解决方案。我想知道该问题。提前致谢

最佳答案

大部分可以将委托(delegate)视为具有单个方法的接口(interface)。因此,在没有委托(delegate)的语言(例如 Java)将使用接口(interface)的地方,拥有委托(delegate)是有意义的。

与接口(interface)相比,委托(delegate)具有以下优势:

  • 在 Java 中,实现可以是私有(private)的,而实现接口(interface)的方法必须是公共(public)的。 (C# 也有显式接口(interface)实现。)
  • 您可以在单个类中实现多个委托(delegate),甚至可以多次实现同一委托(delegate)类型
  • 框架和语言为委托(delegate)提供了额外支持:
    • 将它们组合在一起(并删除它们)
    • 发布/订阅框架(事件)
    • 使用线程池进行后台调用(BeginInvoke 等)
    • Lambda 表达式和匿名方法使它们可以轻松创建“内联”
    • 表达式树,表示数据中表达式的逻辑,而不是 IL

委托(delegate)通常用于:

  • 事件处理,例如在 GUI 中
  • 提供“小”行为,例如LINQ 中的过滤器和投影
  • 异步编程的回调

将它们视为封装单个行为的一种方式,并看看它会将您引向何方。

关于c# - 委托(delegate)大会的主要流程是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3115899/

相关文章:

c# - 什么是 VB.NET 等同于 C#'s ' using' block

c# - 在 C# 中使用其他数组的内容创建新数组

c# - 接受一个对象并返回另一个对象的通用委托(delegate)

c# - 在 C# 2.0 中使用委托(delegate)结果作为输入

c# - 使用 Moq 测试接受委托(delegate)的方法

iphone - 从类方法中将委托(delegate)设置为 "self"

c# - 为什么 GetWindowText 使用 "closed"句柄而不是随机句柄挂起

java - 仅从每个 Java 文件顶部删除多行注释

c# - 如何修改Expression<Func<???, bool>>的类型参数?

c# - 从非托管 C 库访问 C# 方法是否安全?