C# Programming

Robuste String-zu-Integer-Konvertierung in C#

Spread the love

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 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert