Ich möchte Kilians Antwort hinzufügen, dass ein großer Unterschied zwischen Java und C # darin besteht, dass C # -Designer nicht nur die Sprache, sondern auch die Standard-IDE steuern.
Das Hinzufügen von Erweiterungsmethoden und Teilklassen kann ein Albtraum bei der Versionsverwaltung sein, wenn die IDEs dies nicht ordnungsgemäß unterstützen.
Da erwartet wird, dass Sie Java mit der Plattform Ihrer Wahl (Eclipse, Netbeans, vi + Ant) kompilieren können, ist das Hinzufügen von Funktionen, die den Code beschädigen (und das Entwickeln zusätzlicher Erweiterungen wie LINQ), weitaus komplizierter als " Da IntelliSense sich mit diesen Fällen befasst, müssen wir uns keine Sorgen machen. "
Manchmal lohnt es sich auch, den Wert der Features anstelle der Anzahl zu notieren. Zum Beispiel sind automatische Eigenschaften nett und ich wünsche mir auf jeden Fall, dass Java dies unterstützt, aber am Ende bedeutet dies nur, dass Sie noch ein paar Codezeilen in Java schreiben müssen. In ähnlicher Weise empfinde ich das Aufrufen von "Events" als eine Art Fehlbezeichnung, da es sich nur um speziell gekennzeichnete Stellvertreter handelt und nur um eine verfeinerte Kopie des Observer-Musters, das bereits von Java verwendet wird (in Java ist dies wiederum expliziter erforderlich) Kodierung)
Verstehen Sie mich nicht falsch, ich denke, C # hat einige bemerkenswerte Neuerungen eingeführt, und ich wünsche mir, dass eines Tages große Oracle-Bosse aufwachen und ein echtes "Java 2" starten, um einige davon einzuschließen, aber die Lücke ist nicht so offensichtlich wie Ihre Fragenpunkte.