2009-03-26 11 views
5

JavaとC#の基本的な違いは、内部/ローカル/匿名クラスという点で何ですか?内部/ローカル/匿名のクラスに関して、JavaとC#の基本的な違いは何ですか?

+0

重複するhttp://stackoverflow.com/questions/521305/why-should-i-learn-c http://stackoverflow.com/questions/325046/java-or-netその他多数 – Welbog

+0

dupe - タイトルを見てください。それは具体的な違いについて尋ねています。私はこのことをより明確にするために質問を編集します。 –

+0

私はこれが「正確な重複」とみなされることはほとんどありません。 –

答えて

8

C#にはJavaの内部クラスと同等のものはありません。Javaの「静的」なネストされたクラスなど、ネストされた型しかありません。

アクセスルールは多少異なります.Javaでは、外部クラスはネストされたクラスのプライベートメンバーにアクセスでき、その逆もあります。 C#では、ネストされたクラスは外部クラスのプライベートメンバーにアクセスできますが、ではなく、の逆です。

C#のは、Javaのような匿名内部クラスを持っていないが、それは匿名内部クラスは、通常に使用されているものの最もを達成するための非常にクリーンな方法で匿名メソッドとラムダ式を、持っていません。 2つのメカニズムの可変キャプチャは異なります。詳細はmy article on closuresを参照してください。

2

私の考えでは、最大の違いは、(Javaの匿名クラスとC#の匿名メソッド)がどのようにキャプチャを処理するかです。 javaでは、変数の現在のをキャプチャします(元の値とキャプチャされた値は次に隔離されます)。 C#では、変数自体をキャプチャします。これは二重に裁断され、問題につながる可能性がありますが、正しく使用すると信じられないほど強力です。

関連する問題