Was ist der Punkt, an dem eine statische Methode in einer nicht statischen Klasse deklariert wird?

7

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

    
Richard77 13.07.2010, 11:28
quelle

7 Antworten

4

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.

    
Alex F 13.07.2010, 11:35
quelle
21

Wenn die Methode etwas mit dem Typ, aber nicht mit der Instanz zu tun hat, kann sie statisch sein.

DateTime.Parse und Int32.Parse sind Beispiele.

    
cjk 13.07.2010 11:29
quelle
5

Dies ist nützlich für das Erstellen von Factory-Methoden, die keine Mitglieder eines Objekts sind, aber Zugriff auf die Interna eines Objekts benötigen, um es zu initialisieren.

    
Ferruccio 13.07.2010 11:36
quelle
5

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:

%Vor%     
Bobby 13.07.2010 11:36
quelle
3

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

    
Johann Strydom 13.07.2010 13:17
quelle
2

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.

    
Himadri 13.07.2010 11:35
quelle
1

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.

    
awe 13.07.2010 11:36
quelle

Tags und Links