Das Konvertieren von Strings in Integer ist eine grundlegende Aufgabe in der C#-Programmierung. Dieser Artikel untersucht die effizientesten und robustesten Methoden und betont Best Practices für die Behandlung verschiedener Szenarien und potenzieller Fehler.
Inhaltsverzeichnis
- Die robuste
TryParse()
-Methode - Die
Parse()
-Methode: Einfach, aber riskant - Die
Convert.ToInt*()
-Methoden: Alternativen zur Betrachtung - Die richtige Methode für Ihre Bedürfnisse auswählen
Die robuste TryParse()
-Methode
Die TryParse()
-Methoden (z. B. Int32.TryParse()
, Int64.TryParse()
, Int16.TryParse()
) sind im Allgemeinen der bevorzugte Ansatz für die String-zu-Integer-Konvertierung in C#. Sie bieten einen erheblichen Vorteil gegenüber den Parse()
-Methoden, da sie Ausnahmen vermeiden. Stattdessen geben sie einen booleschen Wert zurück, der den Erfolg oder Misserfolg anzeigt, und geben den analysierten Integer über einen out
-Parameter zurück.
Dieser Ansatz verbessert die Effizienz und Lesbarkeit des Codes, da try-catch
-Blöcke entfallen. TryParse()
behandelt auch Überlaufausnahmen elegant und gibt false
zurück, anstatt eine Ausnahme auszulösen.
string strNumber = "12345";
int number;
bool success = Int32.TryParse(strNumber, out number);
if (success)
{
Console.WriteLine("Der Integer-Wert ist: " + number);
}
else
{
Console.WriteLine("Ungültige Eingabe. Der String ist keine gültige ganze Zahl.");
}
Die Parse()
-Methode: Einfach, aber riskant
Die Parse()
-Methoden (z. B. Int32.Parse()
, Int64.Parse()
, Int16.Parse()
) bieten eine prägnantere Möglichkeit, Strings in Integer zu konvertieren, aber sie haben einen erheblichen Nachteil: Sie lösen Ausnahmen (FormatException
) aus, wenn der Eingabe-String keine gültige Integer-Darstellung ist. Dies erfordert die Verwendung von try-catch
-Blöcken, was Komplexität und potenziellen Leistungsaufwand hinzufügt.
string strNumber = "12345";
int number;
try
{
number = Int32.Parse(strNumber);
Console.WriteLine("Der Integer-Wert ist: " + number);
}
catch (FormatException)
{
Console.WriteLine("Ungültige Eingabe. Der String ist keine gültige ganze Zahl.");
}
Obwohl die Syntax einfacher ist, macht das erhöhte Risiko nicht behandelter Ausnahmen TryParse()
zu einer sichereren und im Allgemeinen besseren Alternative.
Die Convert.ToInt*()
-Methoden: Alternativen zur Betrachtung
Die Convert
-Klasse bietet Methoden wie Convert.ToInt32()
, Convert.ToInt64()
und Convert.ToInt16()
. Funktional ähnlich zu Parse()
, lösen sie auch bei Fehlern Ausnahmen aus. Sie bieten möglicherweise subtile Unterschiede in der Behandlung von Leerzeichen oder Grenzfällen, aber sie teilen die gleiche Anfälligkeit für Ausnahmen, was TryParse()
zur robusteren Option macht.
string strNumber = "12345";
int number;
try
{
number = Convert.ToInt32(strNumber);
Console.WriteLine("Der Integer-Wert ist: " + number);
}
catch (FormatException)
{
Console.WriteLine("Ungültige Eingabe. Der String ist keine gültige ganze Zahl.");
}
Die richtige Methode für Ihre Bedürfnisse auswählen
Für die meisten Szenarien ist TryParse()
der empfohlene Ansatz. Seine ausnahme-sichere Handhabung und Effizienz machen es zur überlegenen Wahl. Verwenden Sie Parse()
oder Convert.ToInt*()
nur, wenn Sie einen ganz bestimmten Grund haben, Ausnahmen direkt in Ihrem Code zu behandeln und die potenziellen Auswirkungen auf die Leistung verstehen. Wählen Sie immer den geeigneten Integer-Typ (Int16
, Int32
, Int64
) basierend auf dem erwarteten Wertebereich Ihrer Eingaben.