Warum Java das bessere C# ist… Teil 2
Dez 17th, 2008 by hendrik
Eigentlich hatte ich ja gedacht, mein letzter Eintrag hätte alle deutlichen Schwachpunkte von C# angesprochen. Aber wie sich nach einer Diskussion gezeigt hat, habe ich doch glatt zwei wichtige Dinge übersehen:
- C# unterstützt keine checked exceptions. Die mögen vielen Leuten, gerade denen, die von der C++ Seite zu C#/Java kommen, vielleicht eh unnötig restriktiv erscheinen. Die Compilezeit-Sicherheiten, die man durch diesen Mechanismus gewinnt, sind jedoch enorm und können eine ganze Menge Fehler im frühzeitig verhindern. C# unterstützt so etwas leider nicht von Haus aus, sondern geht in Punkto Exception-Handling eher wieder in Richtung C++. Was einerseits sehr schade, aber andererseits jetzt wohl auch nicht mehr zu ändern ist.
- C# unterstützt keine Konstanten in Interfaces. Ich weiß ehrlich gesagt nicht, woran das liegt und was das soll – die IL unterstützt das offenbar sehr wohl. Selbiges gilt für Enumerationen. An vielen Stellen wäre so etwas doch extrem nützlich, gerade wenn es darum geht, Komponenteninterfaces nach außen zu tragen. So muss das alles dann in zusätzliche Hilfsklassen aufsplitten, globale Enums anlegen oder statt Interfaces abstrakte Klassen benutzen – was in vielen Fällen dank verbotenener Mehrfachvererbung nicht geht.
An dieser Stelle noch einmal herzlichen Dank an Jochen dafür, dass er mich auf diese Punkte aufmerksam gemacht hat.
