Struct

Aus Das Sopra Wiki
Wechseln zu: Navigation, Suche

Strukturen, oder auch Structs sind Wertetypen. Sie verhalten sich anders als Klassen, können aber fast die gleichen Member aufnehmen. Es gibt jedoch einige Unterschiede zu Klassen:

  • Strukturen können nicht Basis einer Vererbungshierarchie sein, erben jedoch implizit von Object.
  • Der Standardkonstruktor ist in Strukturen implizit vorhanden und kann nicht explizit deklariert werden.
  • Strukturen können ohne Initialisierung durch new verwendet werden.

Alle Wertetypen (int, double usw.) sind intern Strukturen. Das Vorhandensein eines Konstruktors bei einem Wertetyp dient allerdings nur dazu, die Felder des struct mit Standardwerten zu initialisieren. Daher muss das Schlüsselwort new nicht verwendet werden. Verzichtet man auf die Verwendung von new, müssen die Felder der Struktur vor der erstmaligen Benutzung mit Werten belegt werden.

public struct Coords
{
   public int x;
   public int y;
   public int z;

   public Coords(int x, int y, int z)
   {
      this.x = x;
      this.y = y;
      this.z = z;
   }
}

[...]

void DoSomething()
{
   Coords coords;  // Der Standardkonstruktor ist immer vorhanden und muss nicht aufgerufen werden
   coords.x = 10;
   coords.y = 20;
   coords.z = -1;

   Coords new_coords = new Coords(10, 11, -5);  // Erzeugen des Structs new_coords mit Hilfe des eigenen Konstruktors
}