使用委托代替接口
我读到您可以使用接口和委托来达到相同的目的。就像,您可以使用委托而不是接口。
有人可以举个例子吗?我在《nutshell》书中看到过一个例子,但我不记得了,想问问。
能否提供一些示例代码?用例?
谢谢。
I read that you can use interfaces and delegates for the same purpose. Like, you can use delegates instead of interfaces.
Can someone provide an example? I've seen an example in the nutshell book but I fail to remember and wanted to ask away.
Is it possible to provide some sample code? Use case?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您的接口只有一个方法,那么使用委托会更方便。
比较以下示例:
使用接口
使用委托
您可以看到委托版本稍小一些。
使用匿名方法和“Func”委托
如果将其与内置 .NET 通用委托(
Func
、Action
等)和匿名方法结合使用方法,您可以将整个代码替换为:If your interface has a single method, then it is more convenient to use a delegate.
Compare the following examples:
Using an interface
Using a delegate
You can see that the delegate version is slightly smaller.
Using anonymous methods and `Func` delegates
If you combine this with built-in .NET generic delegates (
Func<T>
,Action<T>
and similar), and anonymous methods, you can replace this entire code with:委托的使用方式与单方法接口相同:
Delegates can be used in the same way as a single-method interface:
当您使用委托时:
当您使用接口时:
用例 - 提供只能执行一个操作的事物。委托很好,因为您不必创建新类,您只需采用具有相同签名的方法即可,甚至传递一个调用具有不同签名的方法的 lambda。但如果您决定获得更复杂的逻辑,接口会更灵活:
When you use delegate:
When you use an Interface:
Use case - provide a thing that can do only one action. Delegates are good because you don't have to create new classes you can just take a method with the same signature, or even pass a lambda which calls a method with different signature. But Interfaces are more flexible if you decide to get more complex logic: