C#-Typkonvertierung meistern: Implizit, Explizit, Parse und Convert-Methoden
C#-Typkonvertierung meistern
Lernen Sie, wie Sie in C# zwischen Datentypen konvertieren – von impliziten und expliziten Casts bis zu den leistungsstarken Parse- und Convert-APIs – mit klaren Beispielen und Best-Practice-Hinweisen.
Typkonvertierung – das Ändern eines Werts von einem Datentyp in einen anderen – ist eine Kernkompetenz in C#. Zu verstehen, wann und wie man jede Konvertierungsmethode verwendet, stellt sicher, dass Ihr Code sowohl sicher als auch effizient ist.
In C# fallen Konvertierungen in zwei große Kategorien:
- Implizite Typkonvertierungen
- Explizite Typkonvertionen (Casting)
1. Implizite Typkonvertierung in C#
Implizite Konvertierungen werden vom Compiler automatisch durchgeführt, wenn kein Datenverlust auftreten kann. Sie sind sicher und erfordern keine zusätzliche Syntax.
Typische Szenarien beinhalten die Konvertierung eines kleineren numerischen Typs in einen größeren – z. B. int zu double –, damit der Wert ohne Abschneigung dargestellt werden kann.
Beispiel: Implizite Typkonvertierung
using System;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
int numInt = 500;
// Implizite Konvertierung
double numDouble = numInt;
Console.WriteLine($"numInt Wert: {numInt}");
Console.WriteLine($"numInt Typ: {numInt.GetType()}");
Console.WriteLine($"numDouble Wert: {numDouble}");
Console.WriteLine($"numDouble Typ: {numDouble.GetType()}");
Console.ReadLine();
}
}
}
Ausgabe
numInt Wert: 500 numInt Typ: System.Int32 numDouble Wert: 500 numDouble Typ: System.Double
Da double eine größere Kapazität hat, fördert der Compiler den int-Wert sicher ohne Überlaufrisiko.
Hinweis: Implizite Konvertierungen verlieren nie Daten, erhöhen aber die Größe des Zieldatentyps.
2. Explizite Typkonvertierung (Casting) in C#
Explizite Konvertierungen, oder Casts, werden verwendet, wenn von einem größeren in einen kleineren Typ oder zwischen unverwandten Typen konvertiert wird. Der Entwickler muss die Absicht signalisieren, und der Compiler kann Warnungen ausgeben, wenn die Konvertierung Daten verwerfen könnte.
Beispiel: Explizite Typkonvertierung
using System;
namespace MyApplication
{
class Program
{
static void Main(string[] args)
{
double numDouble = 1.23;
int numInt = (int)numDouble; // Expliziter Cast
Console.WriteLine($"Original double Wert: {numDouble}");
Console.WriteLine($"Konvertierter int Wert: {numInt}");
Console.ReadLine();
}
}
}
Ausgabe
Original double Wert: 1.23 Konvertierter int Wert: 1
Der Cast schneidet den Bruchteil ab, sodass 1.23 zu 1 wird. Wenn Präzision wichtig ist, erwägen Sie Rundungsmethoden vor dem Cast.
Hinweis: Casting wird auch als Typumwandlung bezeichnet.
3. Strings mit Parse() konvertieren
Bei der Konvertierung von string in einen numerischen Typ bieten int.Parse, double.Parse etc. einen direkten und typsicheren Ansatz.
Beispiel: Verwendung von int.Parse
using System;
namespace Conversion
{
class Program
{
static void Main(string[] args)
{
string n = "100";
int a = int.Parse(n);
Console.WriteLine($"Original string Wert: {n}");
Console.WriteLine($"Konvertierter int Wert: {a}");
Console.ReadLine();
}
}
}
Ausgabe
Original string Wert: 100 Konvertierter int Wert: 100
Der Versuch, einen nicht-numerischen String wie "test" zu parsen, löst eine FormatException aus. In Produktionscode umschließen Sie den Aufruf mit try-catch oder verwenden int.TryParse für eine fehlerfreie Behandlung.
4. Die Convert-Klasse
Die statische Convert-Klasse bietet eine breite Palette von Methoden zur Konvertierung zwischen vielen Datentypen, oft mit internen Prüfungen.
| Methode | Beschreibung |
|---|---|
ToBoolean() | Konvertiert einen Wert zu bool |
ToChar() | Konvertiert einen Wert zu char |
ToDouble() | Konvertiert einen Wert zu double |
ToInt16() | Konvertiert einen Wert zu 16-Bit-int |
ToString() | Konvertiert einen Wert zu string |
Nachfolgend illustrative Beispiele für gängige Konvertierungen.
Beispiel: int → string und double
using System;
namespace Conversion
{
class Program
{
static void Main(string[] args)
{
int num = 100;
Console.WriteLine($"int Wert: {num}");
string str = Convert.ToString(num);
Console.WriteLine($"string Wert: {str}");
double dbl = Convert.ToDouble(num);
Console.WriteLine($"Double Wert: {dbl}");
Console.ReadLine();
}
}
}
Ausgabe
int Wert: 100 string Wert: 100 Double Wert: 100
Beispiel: string ↔ double
using System;
namespace Conversion
{
class Program
{
static void Main(string[] args)
{
string str = "99.99";
Console.WriteLine($"Original string Wert: {str}");
double dbl = Convert.ToDouble(str);
Console.WriteLine($"Konvertierter Double Wert: {dbl}");
double num = 88.9;
Console.WriteLine($"Original double Wert: {num}");
string newStr = Convert.ToString(num);
Console.WriteLine($"Konvertierter string Wert: {newStr}");
Console.ReadLine();
}
}
}
Ausgabe
Original string Wert: 99.99 Konvertierter Double Wert: 99.99 Original double Wert: 88.9 Konvertierter string Wert: 88.9
Beispiel: int → bool
using System;
namespace Conversion
{
class Program
{
static void Main(string[] args)
{
int num1 = 0;
int num2 = 1;
bool bool1 = Convert.ToBoolean(num1);
bool bool2 = Convert.ToBoolean(num2);
Console.WriteLine($"Boolescher Wert von 0 ist: {bool1}");
Console.WriteLine($"Boolescher Wert von 1 ist: {bool2}");
Console.ReadLine();
}
}
}
Ausgabe
Boolescher Wert von 0 ist: False Boolescher Wert von 1 ist: True
Hinweis: In C# wird 0 als false interpretiert; jede nicht-null Ganzzahl ergibt true.
Durch das Beherrschen dieser Konvertierungstechniken schreiben Sie Code, der sowohl typsicher als auch ausdrucksstark ist, was Laufzeitfehler reduziert und die Lesbarkeit verbessert.
C Sprache
- Python-Typkonvertierung & Casting meistern: Umfassender Leitfaden
- Zahlen, Typkonvertierung und Mathematik in Python meistern
- Java Type Casting meistern: Von Widening zu Narrowing und darüber hinaus
- Java Generics meistern: Sortierung vereinfachen & Typsicherheit erhöhen
- ASTM A1018 Güte CS Type B: Unlegierter Baustahl – Spezifikationen und Eigenschaften
- ASTM A424 Güte Type II: Stahl für Kesselrohre – Spezifikationen und Leistungswerte
- ASTM A424 Güte Type I: Stahl für Kesselrohre – Wichtige Eigenschaften und Leistung
- ASTM A792 Güte CS Type A – Aluminium-Zink-beschichteter Stahlblech: Eigenschaften & Spezifikationen
- ASTM A53 Güte A Typ E – Spezifikationen & Wichtige Eigenschaften
- ASTM A53 Güte A Typ S Rohr – Spezifikationen & Wichtige Eigenschaften