C Sharp gibt es folgende Kategorien von Datentypen

Aus ahrensburg.city
Version vom 11. August 2025, 22:27 Uhr von Thorsten (Diskussion | Beiträge) (// via Wikitext Extension for VSCode)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.