Wie ich es verstehe, hat eine Membervariable, die in einer no-static-Klasse als static deklariert ist, diese Membervariable unabhängig von der Anzahl der Instanzen eindeutig dieser Klasse.
Was passiert nun mit einer statischen Methode, die in einer nicht statischen Klasse deklariert wurde? Und ( Am wichtigsten ), was ist der Punkt, an dem eine statische Methode in einer nicht statischen Klasse deklariert wird?
Danke für Ihre Hilfe
Klassenmethode, die nur mit ihren Parametern funktioniert, keine Instanzmethoden aufruft und nicht mit Instanzelementen arbeitet, kann als statisch deklariert werden. Eigentlich sollte es für eine bessere Leistung als statisch deklariert werden, da die statische Methode diesen "Zeiger" nicht benötigt.
Betrachten Sie eine kleine Funktion, die zur Klasse gehört, einige Berechnungen mit ihren Parametern vornimmt und berechneten Wert zurückgibt. Diese Funktion sollte statisch sein.
Sie benötigen statische Methoden in nicht statischen Klassen. für das Fabrikmuster (wenn die Klasse eine Fabrik für sich ist, wie Jaco Pretorius darauf hinweist):
%Vor% Oder wenn Sie Hilfsmethoden erstellen möchten. F. e. Du könntest eine FTP-Klasse schreiben, die voll funktionsfähig ist, mit Connect()
, SendCommand()
, ReceiveAnswer()
, Disconnect()
usw., aber du möchtest dem Benutzer erlauben, einfach eine Datei hochzuladen, ohne die ganze Prozedur:
Es wäre unmöglich, das Singleton-Muster zu implementieren, ohne eine statische Methode (und eine private Member-Variable) in einer nicht-statischen Klasse deklarieren zu können.
Siehe Singleton
Sie haben zum Beispiel eine Klasse zB Bank_Account
, in der Sie die Anzahl der Objekte berechnen möchten, die für diese Klasse erstellt wurden.
Also, Sie haben ein statisches Feld sagen count
. Wenn Sie dann ein Objekt der Klasse Bank_Account
initialisieren, müssen Sie das Feld erhöhen, in dem die Anzahl der für diese Klasse erstellten Objekte gespeichert wird. Die Methode zum Erhöhen dieser statischen Variable ist statisch, da sie für alle für diese Klasse erstellten Objekte identisch ist.
Wie schon ck gesagt wurde, kann es Methoden geben, die etwas mit dem Typ zu tun haben. Es ist wichtig, daran zu denken, dass dies eine Dienstprogrammfunktion ist, die nicht auf alle Mitgliedsvariablen im Typ / Klasse zugreifen kann, da sie direkt aufgerufen werden kann, ohne irgendeine Instanz der Klasse zu haben. Wenn Sie versuchen, eine statische Methode zu definieren, die auf eine Membervariable (oder nicht statische Methode) zugreift, erhalten Sie tatsächlich einen Compilerfehler.
Tags und Links c#