2

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

4

2 回答 2

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

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

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

于 2009-08-07T19:30:29.223 回答
0

c#中带有匿名方法的真正闭包

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

于 2009-08-07T22:28:28.490 回答