Montag, 31. Januar 2011

static (C#, C++)

In C# kann man auch nicht einfach Funktionen schreiben wie in C oder C++, diese müssen in einer Klasse beeinhaltet sein. Um eine Funktion oder Variable verfügbar zu machen, ohne dass man eine Instanz der Klasse braucht, kann man das Kommando static benutzen. Eine statische Funktion oder Variable ist genau EIN mal verfügbar, egal wie viele Instanzen man hat.

Beispiel:

public class A
{
  public static int staticVar;
  public int memberVar;

  public A()
  {
    staticVar++;
    memberVar++;
  }

  public static void staticFunc()
  {...}

  public void memberFunc()
  {...}
}
...
A InstanzA=new A();
A InstanzB=new A();
A.staticVar++;

Die staticVar ist in diesem Beispiel am Ende gleich 3. Die memberVar ist gleich 1. InstanzA.staticVar ist dasselbe wie InstanzB.staticVar oder A.staticVar, während InstanzA.memberVar und InstanzB.memberVar zur jeweiligen Instanz gehören. Auf memberVar kann man NICHT direkt über A zugreifen. (A.memberVar ist ungültig)

Bei statischen Funktionen verhält es sich so, dass sie nicht auf Member Variablen zugreifen können. Sie sind ja Instanz-unabhängig also können sie auch nicht auf die Variablen einer Instanz zugreifen. Eine statische Funktion im obigen Beispiel könnte die staticVar verändern aber nicht die memberVar. Gültig wären hier folgende Aufrufe:

InstanzA.memberFunc();
InstanzB.memberFunc();

InstanzA.staticFunc();
InstanzB.staticFunc();
A.staticFunc();

Keine Kommentare:

Kommentar veröffentlichen