Konvertieren von Datentypen
Tip
Weitere Details finden Sie auf der Registerkarte "Text und Bilder ".
Da C# stark typiert ist, müssen Sie manchmal explizit einen Wert von einem Datentyp in einen anderen konvertieren. Dies ist besonders wichtig beim Arbeiten mit der Benutzereingabe, da Console.ReadLine() immer Text (a string) zurückgegeben wird , auch wenn der Benutzer eine Zahl eingibt.
Warum Konvertierung wichtig ist
Betrachten Sie dieses häufige Szenario:
Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int nextYear = ageInput + 1; // ERROR! Can't add int to string
Um mit Benutzereingaben Berechnungen durchzuführen, müssen Sie die Zeichenfolge zuerst in eine Zahl umwandeln.
Konvertierungsmethoden
C# stellt Methoden zum Ändern von Werten zwischen Datentypen bereit Convert :
| Method | Wird konvertiert in | Example | Result |
|---|---|---|---|
Convert.ToInt32() |
int | Convert.ToInt32("42") |
42 |
Convert.ToDecimal() |
decimal | Convert.ToDecimal("19.99") |
19.99m |
Convert.ToDouble() |
double | Convert.ToDouble("3.14") |
3.14 |
Convert.ToString() |
Schnur | Convert.ToString(42) |
"42" |
Hier erfahren Sie, wie Sie das frühere Szenario beheben:
Console.Write("Enter your age: ");
string ageInput = Console.ReadLine();
int age = Convert.ToInt32(ageInput);
int nextYear = age + 1;
Console.WriteLine($"Next year you'll be {nextYear}");
Sie können versuchen, diesen Code selbst im C#-Code-Editor auszuführen.
Analysemethoden
Eine weitere Möglichkeit zum Konvertieren von Zeichenfolgen in Zahlen besteht in den Parse Methoden:
int age = int.Parse("25");
decimal price = decimal.Parse("19.99");
double average = double.Parse("87.5");
Sowohl Convert.ToInt32() als auch int.Parse() erfüllen ähnliche Funktionen – verwenden Sie einfach den Stil, den Sie bevorzugen.
Umwandlung zwischen numerischen Typen
Um zwischen numerischen Typen (wie z. B. decimal und int) zu konvertieren, verwenden Sie einen Cast, indem Sie den Zieltyp in Klammern setzen:
decimal price = 19.99m;
int wholePrice = (int)price; // Casts to int: 19 (decimal dropped)
Console.WriteLine(wholePrice); // Output: 19
Sie können auch umwandeln, um die Dezimalgenauigkeit während der Division beizubehalten:
int first = 7;
int second = 2;
decimal result = (decimal)first / (decimal)second;
Console.WriteLine(result); // Output: 3.5
Was geschieht mit ungültigen Konvertierungen?
Wenn Sie versuchen, einen Wert zu konvertieren, der nicht als Zahl interpretiert werden kann, löst C# einen Fehler aus:
int number = Convert.ToInt32("hello"); // ERROR: Input string was not in a correct format
Stellen Sie zunächst sicher, dass der Wert konvertiert werden kann, bevor Sie versuchen. Später erfahren Sie, wie Sie Fehler ordnungsgemäß behandeln.