Klingt für mich als würdest du Features von "dyn. Interpretersprachen" wie Python mit statischen vergleichen. Wie sehr willst du Java aufbohren? Damit bleibt nicht viel übrig was typisch Java wäre.
Diese Features haben rein gar nichts mit dynamischer Typisierung oder einem Interpreter zu tun und beeinflussen in keinster Weise die statische Typisierung von C#.
Properties, Operatorüberladung, Indexer, Typinferenz, LINQ, Delegates, Lambda-Funktionen, Events, Wertetypen, anonyme Typen, Collection-Initialisierer, partielle Klassen, Extension-Methoden, echte Generics, asynchrone Methoden, benannte und optionale Methoden-Argumente, Generatoren (yield), multidimensionale Arrays (nicht nur Arrays von Arrays), Ressourcemanagement-Blöcke (using), vereinheitlichtes Typsystem (Wertetypen und Referenztypen sind gemeinsam von object abgeleitet), ...
Klingt für mich als würdest du Features von "dyn. Interpretersprachen" wie Python mit statischen vergleichen. Wie sehr willst du Java aufbohren? Damit bleibt nicht viel übrig was typisch Java wäre.
Diese Features haben rein gar nichts mit dynamischer Typisierung oder einem Interpreter zu tun und beeinflussen in keinster Weise die statische Typisierung von C#.