Wenn Sie Daten für eine Klasse haben, die geändert wird und im gesamten Programm beibehalten werden muss, aber nur in einer Elementfunktion verwendet wird, wird diese Variable vorzugsweise als lokale statische Variable der Klasse verwendet Routine, in der es ist oder es ein Mitglied der Klasse machen?statische Variable vs. Element
Antwort
Die Frage ist nicht "werden die Daten im gesamten Programm verwendet werden", sondern "Wenn Sie zwei Objekte dieser Klasse erstellen, möchten Sie, dass sie diese Daten teilen?" Wenn ja, mache es statisch. Wenn nein, nicht.
Ich würde argumentieren, dass Sie in den meisten Fällen nie eine lokale statische Variable verwenden sollten, und stattdessen eine statische Elementvariable verwenden. Dann degeneriert die Frage, ob diese Variable unter den Klasseninstanzen geteilt werden soll oder nicht.
Wenn Sie eine lokale Variable als statisch deklarieren, bedeutet dies, dass Ihre Methode jetzt einen vom Status des Objekts getrennten Zustand hat. Es kann zu vielen Fehlern bei der Pflege dieses Codes (z. B. bei der Implementierung des Kopierkonstruktors, der Zuweisung, der Serialisierung) und beim Lesen (unklares Methodenverhalten) kommen.
Vermeiden Sie die Verwendung von statischen Einträgen, es sei denn, Sie haben einen guten Grund (der einzige, den ich vorstellen kann, ist Single-Thread-Singletone-Implementierung).
- 1. Statische Variable vs. Member
- 2. Statische Variable vs Volatile
- 3. nicht statische vs. statische Funktion und Variable
- 4. statische Variable innerhalb der Funktion vs statische Klasse Variable in C++
- 5. Statische vs nicht-statische Klassen
- 6. Asp.net - Caching vs statische Variable zum Speichern eines Wörterbuchs
- 7. Java-Zeichenfolgen: private statische vs. lokale variable Leistung
- 8. Python statische Variable Neuzuordnung
- 9. Python statische Variable Freigabe
- 10. statische Variable Initialisierung Java
- 11. Template statische Variable
- 12. statische Variable Ordnung
- 13. @BeforeClass vs statische {}
- 14. Funktionen vs. statische Methoden
- 15. Linking: Statische vs Dynamische
- 16. Equals() vs Statische string.Equals()
- 17. Statische vs dynamische sql
- 18. Reflection VS statische Zeug
- 19. Statische Klasse vs Singleton
- 20. Erhöhungsschritte nicht-statische Variable über statische Funktion
- 21. Statische enum vs. nicht statische enum
- 22. War eine statische Variable eine globale Variable?
- 23. $ (Element) .height vs $ (Element) .css ('Höhe', Wert);
- 24. statische vs Klasse als Klassenvariable/Methode (Swift)
- 25. Druck statische Variable für Metaprogrammierung
- 26. statische Instanz Variable Lookup Java
- 27. Android Broadcast Empfänger + statische Variable
- 28. Guice Injektion in statische Variable
- 29. undefiniert Bezug auf statische Variable
- 30. Statische Variable wird zweimal initialisiert
Danke. Ich habe vergessen, dass sogar lokale statische Variablen in Klassenmemberfunktionen von allen Objekten dieser Klasse gemeinsam genutzt werden. – Anonymous