Grundlegende Datentypen in C#
Grundlegende Datentypen in C#: numerisch, textbasiert, logisch, objektorientiert und nullable.
In C# werden Daten in unterschiedlichen Datentypen gespeichert, die festlegen, wie viel Speicher verwendet wird und welche Operationen möglich sind. Diese Datentypen beeinflussen das Verhalten eines Programms maßgeblich. In diesem Artikel betrachten wir numerische, textuelle, logische, dynamische und nullable Datentypen anhand von Beispielen.
Die bewusste Wahl des richtigen Datentyps ist ein zentraler Bestandteil des C#-Lernprozesses. Eine korrekte Typverwendung verbessert die Performance, optimiert die Speichernutzung und reduziert die Fehleranfälligkeit. Ein solides Verständnis der grundlegenden Datentypen bildet daher die Basis für stabile und wartbare Anwendungen.
Numerische Typen
Numerische Typen werden für Ganzzahlen und Gleitkommazahlen verwendet. Für Finanzberechnungen empfiehlt man decimal.
| Typ | Beschreibung | Beispiel | Speicher |
|---|---|---|---|
int | Ganzzahl (−2 Mrd - +2 Mrd) | 42 | 4 Byte |
long | Größere Ganzzahlen | 100000000 | 8 Byte |
short | Kleinere Ganzzahlen | 120 | 2 Byte |
byte | 0 - 255 positiv | 200 | 1 Byte |
double | Gleitkomma (doppelte Präzision) | 3.14 | 8 Byte |
float | Gleitkomma (einfache Präzision) | 2.5f | 4 Byte |
decimal | Dezimal für Finanzen | 19.99m | 16 Byte |
int alter = 25;
double pi = 3.14159;
decimal preis = 19.99m;
Console.WriteLine(alter);
Console.WriteLine(pi);
Console.WriteLine(preis);
Hinweis: Bei finanziellen Berechnungen sollte decimal anstelle von double verwendet werden, da es Rundungsfehler bei Gleitkommazahlen vermeidet und eine höhere Genauigkeit bietet.
Texttypen
char speichert ein einzelnes Zeichen, string eine Zeichenkette.
char ersterBuchstabe = 'M';
string nachricht = "Hallo";
Console.WriteLine(ersterBuchstabe);
Console.WriteLine(nachricht);
Logischer Typ
bool kann nur true oder false enthalten. Häufig in Bedingungen verwendet.
bool istStudent = true;
bool istAbsolvent = false;
Console.WriteLine(istStudent);
Console.WriteLine(istAbsolvent);
Objekt- und dynamische Typen
object, var und dynamic erlauben flexible Nutzung.
object daten = 42;
var text = "Hallo";
dynamic variable = 5;
variable = "Jetzt ein String";
Console.WriteLine(daten);
Console.WriteLine(text);
Console.WriteLine(variable);
Nullable Typen
Werttypen (int, double, bool) können standardmäßig nicht null sein. Mit ? werden sie nullable.
int? note = null;
if (note == null)
Console.WriteLine("Keine Note eingetragen.");
else
Console.WriteLine($"Note: {note}");
Welcher Datentyp Wann Verwendet Werden Sollte
- int: Zähler, Altersangaben, Mengen und Ganzzahlen
- double: Physikalische Messwerte und Näherungsberechnungen
- decimal: Geldbeträge, Preise und finanzielle Berechnungen
- string: Vom Benutzer eingegebene Texte
- bool: Bedingungen, Vergleiche und Kontrollstrukturen
Zuweisungen zwischen Datentypen und Typumwandlungen
In C# können Variablen unterschiedlicher Datentypen nicht immer direkt einander zugewiesen werden. Bei inkompatiblen Typen tritt ein Kompilierungsfehler auf.
Fehlerhafte Zuweisungen
int zahl = 10;
string text = zahl; // FEHLER
bool status = true;
int wert = status; // FEHLER
In diesen Beispielen schlägt die Zuweisung fehl, da die Datentypen nicht miteinander kompatibel sind.
Im obigen Bild erkennt Visual Studio sofort ungültige Zuweisungen zwischen inkompatiblen Datentypen. Im Beispiel wird versucht, Werte zwischen nicht kompatiblen Typen wie bool und int direkt zuzuweisen. Der Editor markiert dies mit einer roten Wellenlinie und zeigt einen Kompilierungsfehler wie CS0029 an.
Implizite Umwandlungen
int klein = 5;
double gross = klein; // Gültig
Numerische Typen mit kleinerem Wertebereich können automatisch in größere Typen umgewandelt werden.
Explizite Umwandlungen
double pi = 3.14;
int ganzeZahl = (int)pi; // 3
Umwandlungen mit möglichem Daten- oder Genauigkeitsverlust erfordern eine explizite Typumwandlung.
Zusammenfassung
- Zahlen:
int,double,decimal - Text:
char,string - Logisch:
bool - Flexibel:
object,var,dynamic - Nullable: mit
?