Kann jemand erklären, was den Unterschied zwischen Instanz und statischen Mitgliedern mit realen Beispielen unterscheidet?Warum verwenden wir statische Member auf C#?
Antwort
Sie erstellen keine Instanzen für statische Klassen. Sie rufen sie einfach mit ihrem Typnamen an.
Zum Beispiel.
public static StaticClass {
public static void StaticMethod(){}
}
die statische Methode aufrufen, werden Sie dies nur geben, StaticClass.StaticMethod()
.
Wenn Sie ein Objekt einer Klasse erstellen, wird dies als Erstellen einer Instanz dieser Klasse bezeichnet. Sie können nur Instanz von Beton Klassen erstellen.
Zum Beispiel
public class ConcreteClass {
public void RandomMethod(){}
}
RandomMethod
aufrufen, erhalten Sie eine Instanz des ConcreteClass
, indem ein Objekt erstellen müssen.
ConcreteClass abc = new ConcreteClass();
abc.RandomMethod();
Beachten Sie auch, dass in einer statischen Klasse, alle ihre Mitglieder statisch sein müssen, und dies macht Sinn, weil, da Sie nicht die Klasse werden instanziiert wird, sollten Sie in der Lage sein, Mitglieder es direkt zu nennen. Aus diesem Grund ist die Methode in meinem obigen statischen Klassenbeispiel ebenfalls statisch.
Ich hoffe, das hilft.
Die Frage erwähnt nie einmal statische Klassen. – Servy
Statische Member werden ausgeführt, ohne den impliziten Parameter "this" zu verwenden, der die Instanzreferenz auf das Objekt darstellt, von dem die Instanzmethode aufgerufen wurde.
var number = Int32.TryParse("1234"); // Static member of Int32.
//Is not called using an object, it doesnt not need the 'this'
//because it doesn't change the data of the class.
string stringy = "asdfasdf";
char [] characters = stringy.ToCharArray();
//requires the strings data so it needs the instance stringy.
Wenn die Klassen Daten benötigt werden, dann brauchen Sie eine Instanz. Wenn nicht, können Sie die Methode statisch machen, so dass sie jederzeit ohne ein Objekt aufgerufen werden kann.
Edit: Ich las das zunächst als statische Methoden. Statische Daten Mitglieder sind völlig unterschiedlich. Wenn Ihr Programm läuft, ist genau ein Datenobjekt dieses Typs zugeordnet und über den Klassennamen ist keine Instanz der Klasse erreichbar.
public class Classy
{
public static int number= 4;
public static void func() { }
// Other non-static fields and properties...
}
//mainline..
//
int n = Classy.number;
Classy.func(); // etc..
- 1. definieren statische Member in C++
- 2. C++ Statische Const Member Variablenverwendung
- 3. Warum brauchen wir statische Konstruktoren?
- 4. Objective c - statische Member und Konstanten
- 5. Statische Member-Objekt-Initialisierungsfehler
- 6. Statische Member-Funktion für nicht statische Mitglieder
- 7. Warum sollten wir statische (feste) Portnummern in grundlegenden Netzwerkdiensten verwenden?
- 8. Warum sollten wir statische Aufrufe in PHP verwenden?
- 9. Statische Variable vs. Member
- 10. Warum verwenden wir flüchtiges Schlüsselwort in C++?
- 11. Warum sollten wir Literale in C# verwenden?
- 12. Warum verwenden wir initializer_list in C++ 11?
- 13. Statische Member einer Instanzklasse
- 14. Warum verwenden wir Serialisierung?
- 15. Warum verwenden wir HTTP?
- 16. Warum verwenden wir tf.name_scope()
- 17. Warum verwenden wir extra Ausdruck?
- 18. Warum verwenden wir setLayoutParams?
- 19. Warum verwenden wir web.xml?
- 20. Statische Member Constraint für op_addition
- 21. C# member Methode als statische Methode ("reversed extension method")
- 22. F # Statische Member Typ Einschränkungen
- 23. nicht-statische Member-Funktion reinterpret_cast fehlgeschlagen
- 24. C Programmierung - Nicht statische Initialisierung eines flexiblen Array-Member
- 25. Wie nicht-statische Member-Funktion in glutDisplayFunc
- 26. Warum verwenden wir Formatbezeichner python
- 27. Warum verwenden wir ViewTreeObserver # addOnGlobalLayoutListener()
- 28. Warum * sollten * Wir verwenden EventHandler
- 29. Verweis auf nicht-statische Member-Funktion muss aufgerufen werden
- 30. Warum verwenden wir pthread_exit(), wenn wir return verwenden können?
Ich empfehle ein gutes Buch und/oder Online-Tutorial (viel verfügbar über Google). – AlG
Nachschlagen "Singleton", das ein Beispiel für die Verwendung von statischen –
statische Mitglieder der Klasse sein kann. Instanzenmitglieder gehören zu der Instanz. (und es gibt viel nützlichere Instanzen von statischen Mitgliedern als nur Singletons) –