これは、Java対C#の引数ではありません。C#の経験のないJavaプログラマーであり、好奇心。
C#について少し読んだところ、Javaよりもはるかに多くの機能があるようです。いくつかの例:
dynamic
キーワード。ただし、Javaには、C#にはない機能はありません。
私の質問は、C#にJavaよりもはるかに多くのネイティブ機能があるのはなぜですか?そして、なぜJavaプロパティや型推論など、年間を通じてこれらのいくつかを追加しなかったのですか?Java言語設計者はより単純なアプローチをとっていますか?これの理由は何ですか?
いくつかの理由:
その結果、Java=には機能のギャップが少しあります。将来の計画は膨大ですが、いつものように、この種のものではすべてが予定より少し長くかかります。
JavaとC#の大きな違いの1つは、C#デザイナーが言語だけでなく標準IDEも制御することです。
IDEが適切にサポートしない場合、拡張メソッドや部分クラスなどを追加することは、開発/コントロールのバージョン管理において悪夢になる可能性があります。
選択したプラットフォーム(Eclipse、Netbeans、vi + Ant)でJavaをコンパイルできることが期待されているため、コードを壊す機能を追加します(これらを使用してLINQなどの追加の拡張機能を開発します) )は、「IntelliSenseがこれらのケースを処理するので、心配する必要がない」と言うよりもはるかに複雑です。
さらに、機能の数ではなく、機能の価値に注目する価値がある場合もあります。たとえば、自動プロパティはニースであり、確かにJavaがこれをサポートすることを望みますが、結局のところ、Javaでさらに数行のコードを記述する必要があることを意味します。同様に、 "イベント"を機能と呼ぶことは、特別にラベル付けされたデリゲートに過ぎず、Javaで既に使用されているオブザーバーパターンの洗練されたコピーにすぎないため、多少誤った名称です。 Javaより明示的なコーディングが必要です)
誤解しないでください。C#で注目に値するいくつかの革新が導入されたと思います。いつかOracleのビッグボスが目覚め、真の「Java 2」を起動してこれらのいくつかを含めることを望みますが、そのギャップは質問ポイント。