我对 C# 比较陌生,我想知道何时适当地使用委托。它们在事件声明中被广泛使用,但是我什么时候应该在我自己的代码中使用它们,它们为什么有用? 为什么不使用别的东西?
我也想知道什么时候必须使用委托,而我别无选择。
感谢你的帮助!
编辑:我想我在这里找到了对 Delegates 的必要使用
我同意已经说过的一切,只是想在上面加上一些其他的话。
委托可以被视为一个/某些方法的占位符。
通过定义委托,你对类的用户说,“请随意将与此签名匹配的任何方法分配给委托,并且每次调用我的委托时都会调用它”。
典型的用途当然是事件。所有 OnEventX委托给用户定义的方法。
委托对于向对象的用户提供一些自定义其行为的能力很有用。大多数情况下,你可以使用其他方式来实现相同的目的,我认为你永远不会被迫创建委托。在某些情况下,这只是完成任务的最简单方法。
就我个人而言,我觉得使用委托将您的代码拆分为多个单元并使其更易于管理。如果您的大多数方法具有相同的签名模式,则可以与单元测试结合使用的绝佳机制
“请随意在此处放置与此签名匹配的任何方法,每次调用我的代表时都会调用它”-> 你让我开心,很好的解释!
还可以将其视为具有编译时静态绑定的许多优点的运行时动态绑定。委托的调用比反射调用替代方法快几个数量级。此外,如果函数签名发生变化,使其不再与委托匹配,则会导致编译时错误,反射调用不会出现这种错误。例如,考虑 MSMQ 样式消息路由器的场景。订阅者消息接收函数可以简单地存储在消息路由键和订阅者委托对的字典中。
委托是否被视为依赖注入的一种形式?