Das static
Schlüsselwort für ein Mitglied in vielen Sprachen bedeutet, dass Sie keine Instanz dieser Klasse erstellen sollten, um auf dieses Mitglied zugreifen zu können. Ich sehe jedoch keine Rechtfertigung dafür, eine ganze Klasse zu bilden static
. Warum und wann sollte ich einen Kurs machen static
?
Welche Vorteile bringt mir der Unterricht static
? Ich meine, nachdem man eine statische Klasse deklariert hat, sollte man immer noch alle Mitglieder als statisch deklarieren, auf die er / sie ohne Instanziierung Zugriff haben möchte.
Dies bedeutet, dass die Math
Klasse beispielsweise als normal (nicht statisch) deklariert werden kann, ohne dass sich dies auf den Code des Entwicklers auswirkt. Mit anderen Worten, eine Klasse statisch oder normal zu machen, ist für Entwickler irgendwie transparent.
quelle
Antworten:
Es macht den Benutzern klar, wie die Klasse verwendet wird. Zum Beispiel wäre es Unsinn, den folgenden Code zu schreiben:
C # nicht muß dies verbieten , aber da es keinen Zweck dient, könnte genauso gut dem Benutzer sagen , dass. Einige Leute (einschließlich ich) halten an der Philosophie fest, dass Programmiersprachen (und APIs…) so restriktiv wie möglich sein sollten, damit sie nur schwer falsch verwendet werden können. Die einzigen zulässigen Operationen sind dann sinnvolle und (hoffentlich) korrekte.
quelle
sealed
zuallererst. Ich gebe zu, dass nicht alle Menschen mit diesem Gefühl einverstanden sind, aber die Kommentare sind kein guter Ort, um darüber zu diskutieren. Aber im Fallestatic
dieses Problems stellt sich nicht einmal: InstanziierenSystem.Math
wird niemals Sinn machen.Math
Klasse als statisch deklarieren, ohne die Klasse als statisch zu deklarierenMath
, können Sie sie dennoch verwenden, ohne dass eine Instanziierung erforderlich ist.static
.new Math()
.StackOverflow hat eine großartige Diskussion zu diesem Thema . Zum leichteren Nachschlagen kopiere ich es hier und füge es im Namen seines Autors Mark S. Rasmussen ein :
quelle
Ich bin überrascht, dass noch niemand erwähnt hat, dass
static
Klassen Erweiterungsmethoden zulassen - sicheres Erweitern eines vorhandenen Typs (einschließlich Hinzufügen von Methodendefinitionen zu Schnittstellen ), die Sie nicht besitzen. Zum Beispiel, was in Scala istkann in C # ausgedrückt werden als
quelle
Für mich ist eine statische Klasse (in C #) so etwas wie das Aufrufen einer Funktion.
Zum Beispiel
Ich gebe eine Schnur ein und hole eine Schnur zurück. Alles ist in dieser Methode enthalten. Kein Zugriff auf Mitgliedsvariable usw.
Um ehrlich zu sein, war es für mich hauptsächlich nützlich, die Codezeilen zu verringern:
Warum machen:
Wenn ich das kann:
In diesen Fällen würde ich statische Klassen verwenden, wenn ich etwas tun wollte, ohne eine Klasse zu benötigen, und weniger Tippen bedeuten würde.
Mark S.-Punkte sind gültig, aber für mich ist es einfacher, wenn ich einige Dienstprogrammmethoden habe, so zu tun, als würde ich eine Funktion aufrufen, um sie als Einzeiler zu referenzieren.
Das mag vereinfachend sein, aber so habe ich es meistens benutzt
static
.quelle