.Net 委托相对于 Java 匿名类的真正优势是什么?

发布于 2024-08-01 20:38:37 字数 83 浏览 7 评论 0原文

我知道 .Net 委托的很多用途可以通过使用接口和匿名类的组合在 Java 中进行模拟,但是在某些情况下委托具有真正的优势并且没有 Java 等效项吗?

I know a lot of the uses of .Net delegates can be emulated in Java by using a combination of interfaces and anonymous classes, but are there any situations where delegates have a real advantage and there is no Java equivalent?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陈独秀 2024-08-08 20:38:37
  • 使用 lambda 表达式和匿名方法,C# 中的语法更加简洁 类型
  • 推断
  • 对语言中委托的一般支持(方法组转换等)
  • 具有语言支持的多播委托
  • 事件(基于观察者模式的简单语法在委托上)
  • 通过系统线程池异步执行
  • 具有语言支持的表达式树

是的,很多可以在Java中完成,但这只是痛苦。

想象一下编写 LINQ 查询但没有 lambda 表达式、扩展方法等。这将是可怕的。 这同样适用于许多其他地方,其中委托是 C# 或 .NET 中的自然解决方案 - 惯用的 Java 解决方案通常使用匿名内部类,因为它们实在是太丑陋了。

  • Much more concise syntax in C# with lambda expressions and anonymous methods
  • Type inference
  • General support for delegates in the language (method group conversions etc)
  • Multi-cast delegates with language support
  • Events (simple syntax for the observer pattern based on delegates)
  • Asynchronous execution via the system thread-pool
  • Expression trees with language support

Yes, a lot of it can be done in Java, but it's just painful.

Imagine writing LINQ queries but without lambda expressions, extension methods etc. It would be hideous. The same goes for a lot of other places where delegates are the natural solution in C# or .NET - the idiomatic Java solution often doesn't use anonymous inner classes because they're so darned ugly.

半﹌身腐败 2024-08-08 20:38:37

真正的闭包,在c#中使用匿名方法,

在java中使用匿名类,你必须声明从外部作用域使用的每个变量,作为final

real closures with anonymous methods in c#

with anonymous classes in java, you have to declare every variable, you use from the outer scope, as final

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文