static ?

Ardaric

Erfahrenes Mitglied
Worin liegt der Unterschied zwischen diesen Beispielen:

static int iZahl = 0;
und
int iZahl = 0;

und

private static void Methode1(){}
und
private void Methode1(){}

Vielen Dank
 
Statische Methoden und Felder in einer Klasse sind unabhängig von der Instanz der Klasse.
Ein Beispiel:

Code:
public class MeineKlasse {
    private static int staticProperty;

    public static int StaticProperty {
        get { return staticProperty; }
        set { staticProperty = value; }
    }

    private int normalProperty;

    public int NormalProperty {
        get { return normalProperty; }
        set { normalProperty = value; }
    }
}
Normalerweise musst Du erst ein Objekt der Klasse erstellen, um auf die Eigenschaften zuzugreifen:
Code:
MeineKlasse mk = new MeineKlasse();
int normProp = mk.NormalProperty;
Mit statischen Feldern und Methoden greifst Du aber nicht auf einzelne Objekte sondern auf die Klasse direkt zu:
Code:
int statProp = MeineKlasse.StaticProperty;
Statische Werte sind immer nur einmal pro Anwendung vorhanden, und nicht für jede Klasseninstanz einzeln.
 
Dieser Thread ist zwar schon sehr alt aber ich finde meine frage passt gut her:

Nun gut eine statische methode heißt dass ich kein objekt der klasse brauche um auf die methode zuzugreifen.

wie entscheide ich ob ich eine Methode/Variable static setze oder nicht?
 
mhhh, also du meinst entweder wann es sich lohnt Methoden und Variablen für alle Instanzen zu teilen, oder du meinst wie du sie statisch machst ^^

zum warum kann ich dir nich viel sagen, hängt davon ab was die Methode macht oder die Variable, musst nunmal wissen ob der Benutzer deiner Klasse einen Wert nur einmal einstellen muss und alle Instanzen rechnen dann damit, oder ob doch jede Instanz nen Unterschiedlichen Wert haben muss/kann.

zum wie: Setz einfach vor die Methoden oder Variablen deklaration "static" (bei vb "shared")

Ich hoffe was ich hier geschrieben hab is richtig ^^
 
Spinquantenzahl hat gesagt.:
wie entscheide ich ob ich eine Methode/Variable static setze oder nicht?
Hi und willkommen im Forum

Methoden und Properties können (müssen aber nicht) static sein, wenn du darin nicht auf Felder der Klasse zugreifst. Soll heißen, dass Objekt an sich nicht änderst oder abfragst.

Beipiel für Methoden, die nicht static sein können: (C#.NET)
Code:
string GetName()
{
       return this.name;
}

bool SetName(string name)
{
       try
       {
              this.name = name;
       }
       catch
       {
             return false;
       }
       return true:
}
Bei beiden wird auf ein Feld innerhalb der Klasse zugegriffen.

Beispiel für statisches Feld.
Application.StartupPath
Das Ausführungsverzeichnis der aktuellen Anwendung ist an jeder Stelle der Anwendung gleich.
 
Hallo Zusammen,

nur mal als Ergänzung.
Das Schlüsselwort Static der Sprache C# hat eine vollkommen andere Bedeutung als in
VB.NET ! static in C# wird zur Beschreibung gemeinsamer Klassevariablen bzw. zur Beschreibung von Methoden verwendet, die ohne ein Objekt verwendet werden können.
In VB.NET ist das Äquivalent dazu das Schlüsselwort Shared und in VB.NET heißt Static
einfach das diese Variable ihren Wert auch beim verlassen der Prozedur beibehält, so wie
es auch in VB Classic ist.
 
Zurück