C# Strukturen (struct): Werttypen definieren & verwenden
Was ist eine Struktur?
Eine Struktur (struct) ist ein Werttyp, der verwandte Daten verschiedener Typen in einer Variablen zusammenfasst. Im Gegensatz zu Klassen werden Strukturen auf dem Stack (oder inline in enthaltenden Typen) gespeichert und beim Zuweisen kopiert.
Struktur definieren
struct Books
{
public string Title;
public string Author;
public string Subject;
public int BookId;
}
Verwendung
Books book1, book2; // Deklaration (Werttyp, kein new nötig)
book1.Title = "C Programming";
book1.Author = "Nuha Ali";
book1.Subject = "C Programming Tutorial";
book1.BookId = 6495407;
book2.Title = "Telecom Billing";
book2.Author = "Zara Ali";
// ...
Console.WriteLine($"Book 1: {book1.Title} by {book1.Author}");
Besonderheiten von C#-Strukturen
- Können Methoden, Felder, Properties, Indexer, Operatoren, Events enthalten.
- Können Konstruktoren haben (aber keinen parameterlosen – der wird vom Compiler bereitgestellt und setzt alle Felder auf Standardwerte).
- Kein Destruktor möglich.
- Keine Vererbung von anderen Structs/Klassen (aber Implementierung von Interfaces erlaubt).
- Können nicht als Basistyp für andere Structs/Klassen dienen.
- Member dürfen nicht
abstract,virtualoderprotectedsein. - Instanziierung ohne
newmöglich (Felder bleiben dann uninitialisiert bis zur expliziten Zuweisung).
Struktur vs. Klasse
| Merkmal | class (Referenztyp) | struct (Werttyp) |
|---|---|---|
| Speicher | Heap (Referenz) | Stack / Inline (Wert) |
| Vererbung | Unterstützt | Nicht unterstützt |
| Default-Konstruktor | Kann definiert werden | Immer implizit, nicht überschreibbar |
| Nullfähigkeit | Kann null sein | Nur über Nullable<T> (T?) |
| Kopierverhalten | Referenzkopie | Wertkopie (Deep Copy der Felder) |
Struktur mit Methoden & Konstruktor
struct Books
{
private string title, author, subject;
private int bookId;
public Books(string t, string a, string s, int id) // benutzerdefinierter Konstruktor
{
title = t; author = a; subject = s; bookId = id;
}
public void Display()
{
Console.WriteLine($"Title: {title}, Author: {author}, Subject: {subject}, ID: {bookId}");
}
}
// Nutzung
var book1 = new Books("C Programming", "Nuha Ali", "C Tutorial", 6495407);
book1.Display();
Wann Struct, wann Class?
- Struct: Kleine, unveränderliche Datencontainer (z. B.
Point,DateTime,Guid), Primitive-ähnliche Semantik, hohe Performance durch Stack-Allokation. - Class: Komplexe Objekte mit Identität, Vererbung, polymorphes Verhalten, größere Datenmengen.
C Sprache
- C++ Structures vs. Classes: Praktischer Leitfaden für Embedded-Entwickler
- Semaphores in Nucleus RTOS: Utility Services & Data Structures
- Buchrezension: Digitise or Die – Ein Blueprint für IoT-getriebene Transformation
- Menschlichkeit im Zeitalter disruptiver Technologie bewahren
- Datenspeicher-Revolution: Nächstgen-Magnetnanostrukturen mit Unsichtbarkeitsumhang
- Top 17 Programmierbücher 2021, um Ihre Coding-Skills zu verbessern
- Java Datenstrukturen: Kernklassen & Collections Framework erkunden
- C-Strukturen meistern: Komplexe Daten effizient organisieren
- C typedef erklärt: Code vereinfachen mit benutzerdefinierten Typnamen
- C++ Datenstrukturen: Arrays, Structs & mehr für effiziente Programme