我似乎一直不明白为什么我们需要委托(delegate)? 我知道它们是保存方法引用的不可变引用类型,但为什么我们不能直接调用方法,而不是通过委托(delegate)调用它?
谢谢
最佳答案
简单的回答:需要执行操作的代码在编写时不知道要调用的方法。如果您在编译时知道要调用哪个方法,则只能直接调用该方法,对吗?所以如果你想抽象出“在适当的时间执行 Action X”的想法,你需要一些 Action 的表示,这样调用 Action 的方法就不需要提前知道确切的实现。
例如:
Enumerable.Select
在 LINQ 中无法知道您要使用的投影,除非您告诉它Button
的作者不知道当用户点击它时您想要什么 Action- 如果一个新线程只做一件事,那就太无聊了......
这可能有助于您将委托(delegate)视为单一方法接口(interface),但具有许多语言语法以使其易于使用,并且对异步执行和多播提供时髦的支持。
关于c# - 为什么我们需要 C# 委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4284493/