Mehrfachvererbung , Delegat
-
Hallo,
warum ist Mehrfachvererbung in CSharp nicht erlaubt. Hat das nicht grosse Vorteile?
Delegate in CSharp sind was ganz anderes als was Delegates normal sind. Nämlich Klassen die für mich etwas erledigen. In CSharp aber sind es Funktionszeiger.
-
Pauli25 schrieb:
was Delegates normal sind. Nämlich Klassen die für mich etwas erledigen
Wer definiert denn, "was Delegates normal sind"? Du?
Mehrfachvererbung hat Nachteile, die man vermutlich prima bei Wikipedia nachlesen kann, was ich dir dringend raten würde. Daneben hat der Verzicht darauf auch einen handfesten technischen Vorteil: dann verweisen nämlich alle Referenzen auf ein Objekt auch auf exakt dieselbe Speicherstelle, nicht auf verschiedene Offsets innerhalb einer Instanz. Dadurch kann die Runtime ein paar Dinge wie den GC, Objektidentitätsvergleiche und Casts effizienter implementieren.
Übrigens kann man viele typische C++-Anwendungsfälle von Mehrfachvererbung in C# mit Interfaces und Extension-Methoden lösen.
-
audacia schrieb:
Übrigens kann man viele typische C++-Anwendungsfälle von Mehrfachvererbung in C# mit Interfaces und Extension-Methoden lösen.
Und viele von den übrigbleibenden Fällen kann man mit Mixins abdecken. Wobei C# keine Mixins anbietet - aber das muss ja nicht immer so bleiben.