Struct
Aus Das Sopra Wiki
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
newverwendet werden.
- Strukturen können Interfaces implementieren.
- Strukturen unterscheiden sich von Klassen auch in ihren Performanzeigenschaften.
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 }
