2

.Net デリゲートの多くの使用法は、インターフェイスと匿名クラスの組み合わせを使用して Java でエミュレートできることは知っていますが、デリゲートが真の利点を持ち、同等の Java がない状況はありますか?

4

2 に答える 2

9
  • ラムダ式と匿名メソッドを使用した C# のより簡潔な構文
  • 型推論
  • 言語でのデリゲートの一般的なサポート (メソッド グループの変換など)
  • 言語をサポートするマルチキャスト デリゲート
  • イベント (デリゲートに基づくオブザーバー パターンの単純な構文)
  • システムスレッドプールによる非同期実行
  • 言語サポート付きの式ツリー

はい、多くのことは Java で実行できますが、面倒です。

ラムダ式や拡張メソッドなどを使わずに LINQ クエリを書くことを想像してみてください。同じことが、C# や .NET でデリゲートが自然なソリューションである他の多くの場所にも当てはまります。慣用的な Java ソリューションでは、非常に醜いため、匿名の内部クラスを使用しないことがよくあります。

于 2009-08-07T19:30:29.223 に答える
0

C#の匿名メソッドを使用した実際のクロージャー

Java の匿名クラスでは、外側のスコープから使用するすべての変数を final として宣言する必要があります。

于 2009-08-07T22:28:28.490 に答える