引入委托(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/