2017-02-03 1 views
-3

Kann jemand erklären, was den Unterschied zwischen Instanz und statischen Mitgliedern mit realen Beispielen unterscheidet?Warum verwenden wir statische Member auf C#?

+2

Ich empfehle ein gutes Buch und/oder Online-Tutorial (viel verfügbar über Google). – AlG

+0

Nachschlagen "Singleton", das ein Beispiel für die Verwendung von statischen –

+0

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) –

Antwort

-1

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.

+1

Die Frage erwähnt nie einmal statische Klassen. – Servy

0

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.. 
Verwandte Themen