C Sharp gibt es folgende Kategorien von Datentypen
Kategorien von Datentypen in C#
- 1. Werttypen (Value Types)
- Einfache numerische Typen: sbyte, byte, short, ushort, int, uint, long, ulong
- Gleitkomma / Präzision: float, double, decimal
- Sonstige eingebaute: bool, char
- Aufzählungen: enum
- Strukturen: struct
- Nullable-Werttypen: T? (z.B. int?)
- Tupel: (int x, string name)
- record struct (immutable Werttyp ab C# 10)
- 2. Referenztypen (Reference Types)
- Klassen: class
- Records: record (Referenztyp)
- Schnittstellen: interface
- Arrays: int[], string[,], Span<T> (stackref, aber als Konzept zugehörig)
- Delegates (inkl. Action, Func)
- String: string (immutable)
- Objektbasis: object
- dynamic (späte Bindung)
- 3. Zeigertypen (Pointer Types, unsafe)
- T* (nur im unsafe-Kontext)
- Funktionzeiger: delegate*<...> (ab C# 9)
- 4. Weitere Konzepte
- Generische Typen: List<T>, Dictionary<TKey,TValue>
- Anonyme Typen: var person = new { Name = "Anna", Alter = 30 };
- Iterators / Enumerables: IEnumerable<T>
- Task / Task<T> (asynchrone Referenztypen)
- Span<T> / ReadOnlySpan<T> (ref struct, stapelbasiert, kein Heap)
Hinweise
- Werttypen werden standardmäßig auf dem Stack (oder inline in Objekten) gespeichert und per Kopie übergeben.
- Referenztypen liegen auf dem Heap; Variablen halten Referenzen.
- Nullable für Referenztypen (string?) aktiviert Nullabilitätsanalyse (ab C# 8).
- Unsichere Zeigertypen erfordern /unsafe und werden selten benötigt.
- Records erleichtern unveränderliche (immutable) Datenmodelle.
Kurze Zuordnung (Beispiele)
| Kategorie | Beispiel | Beschreibung |
|---|---|---|
| Werttyp | int | 32-bit Ganzzahl |
| Referenztyp | string | Immutable Zeichenkette |
| Referenztyp | List<int> | Generische Liste |
| Werttyp (nullable) | int? | Ganzzahl mit Nullbarkeit |
| Zeigertyp | int* | Direkter Speicherzeiger (unsafe) |
Tipp: Verwende nach Möglichkeit sichere Referenz- und Werttypen; setze unsafe nur für Hochleistungs- oder Interop-Szenarien ein.