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

标签 java .net delegates anonymous-class

我知道 .Net 委托(delegate)的很多用途都可以通过结合使用接口(interface)和匿名类在 Java 中模拟,但是是否存在委托(delegate)具有真正优势而没有 Java 等效项的情况?

最佳答案

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

是的,很多可以用 Java 完成,但这很痛苦。

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

关于java - .Net 委托(delegate)相对于 Java 匿名类的真正优势是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246534/

相关文章:

java - 异常处理异步线程队列 异常处理异步线程队列java.lang.UnsupportedOperationException

Java groupingBy : Get two (or more) groups with single Stream

java - Netty IO 从类外部写入服务器

.NET:未设置必需属性时抛出哪个异常?

swift - 使用 SWIFT 从 MVC 中的 Controller 更新 viewController

iOS 如何知道按下了哪个按钮 CollectionView 与自定义委托(delegate)

java - 强制转换会影响instanceof操作的结果吗?

C#属性完全一样,定义在两个地方

c# - .NET 4函数: Function argument question

c# - 在 C# 中传递具有 N 个参数作为参数的方法