Ich verstehe, was statische Klassen und versiegelte Klassen sind, und ich verwende regelmäßig Erweiterungsmethoden, ich frage mich nur - weiß jemand warum statische Klassen in C# versiegelt sind?Warum sind statische Klassen versiegelt?
Ich habe MSDN und die C# -Sprachspezifikation angeschaut, aber es sagt nie wirklich warum sie sind versiegelt.
Warum sollten wir nicht in der Lage sein, statische Klassen zu erben und statische Elemente zu überschreiben usw.?
Edit:
Ich schätze Ihre Antworten, aber Sie sprechen immer noch darüber, was eine statische Klasse ist. Ich weiß, warum ich seine Methoden nicht außer Kraft setzen kann. Aber ich frage, warum haben sie es so gemacht?
Sind Vtables wirklich so teuer? Warum eine Sprache so entwerfen, dass statische Klassen buchstäblich statisch sind? Ist es nur für die Tradition? Gibt es einen anderen Vorteil, den ich nicht sehe?
(Ich habe das schleichenden Verdacht, ich grundsätzlich den Punkt der statischen Klassen Mißverständnis bin.)
Sie können statische Elemente nicht überschreiben, auch wenn die Klasse nicht statisch ist. Sie können sie immer nur beschatten ... Warum nicht stattdessen ein Entwurfsmuster wie Singleton verwenden, in dem Sie die Elemente überschreiben (weil es sich um eine statische Instanz handelt, nicht um Klassen) oder um andere Entwurfsmuster? –
@BrianMains Es ist kein Singleton, es ist ein Zeroton. Es gibt niemals irgendwelche Instanzen, sondern genau einen. – Servy
@Servy Ich glaube Brian schlägt vor, dass das OP ein Singleton verwendet, nicht dass eine statische Klasse eins ist. – DavidG