# String in Integer umwandeln
Um einen string
explizit umzuwandeln, stehen verschiedene Methoden zur Verfügung zu einem integer
, wie zum Beispiel:
Aber alle diese Methoden werden einen FormatException
auslösen , wenn die Eingabezeichenfolge nicht numerische Zeichen enthält. Dazu müssen wir eine zusätzliche Ausnahmebehandlung schreiben (try..catch
), um sie in solchen Fällen zu behandeln.
Erklärung mit Beispielen:
Lassen Sie unsere Eingabe also sein:
string inputString = "10.2";
Beispiel 1: Convert.ToInt32()
int convertedInt = Convert.ToInt32(inputString); // Failed to Convert
// Throws an Exception "Input string was not in a correct format."
Hinweis: Gleiches gilt für die anderen erwähnten Methoden, nämlich - Convert.ToInt16();
und Convert.ToInt64();
Beispiel 2: int.Parse()
int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.
Wie umgehen wir das?
Wie bereits erwähnt, benötigen wir für die Behandlung der Ausnahmen normalerweise einen try..catch
wie unten gezeigt:
try
{
string inputString = "10.2";
int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
//Display some message, that the conversion has failed.
}
Aber mit dem try..catch
überall wird keine gute Praxis sein, und es kann einige Szenarien geben, in denen wir 0
geben wollten wenn die Eingabe falsch ist, (Wenn wir der obigen Methode folgen, müssen wir 0
zuweisen bis convertedInt
vom Fangblock). Um solche Szenarien zu handhaben, können wir eine spezielle Methode namens .TryParse()
verwenden .
Die .TryParse()
Methode mit einer internen Ausnahmebehandlung, die Ihnen die Ausgabe an out
gibt -Parameter und gibt einen booleschen Wert zurück, der den Konvertierungsstatus (true
ob die Konvertierung erfolgreich war; false
wenn es fehlgeschlagen ist). Anhand des Rückgabewerts können wir den Konvertierungsstatus ermitteln. Sehen wir uns ein Beispiel an:
Verwendung 1: Speichern Sie den Rückgabewert in einer booleschen Variablen
int convertedInt; // Be the required integer
bool isSuccessConversion = int.TryParse(inputString, out convertedInt);
Wir können die Variable isSuccessConversion
prüfen nach der Ausführung, um den Konvertierungsstatus zu überprüfen. Wenn es falsch ist, dann der Wert von convertedInt
wird 0
sein (Sie müssen den Rückgabewert nicht überprüfen, wenn Sie 0
möchten für Konvertierungsfehler).
Verwendung 2: Überprüfen Sie den Rückgabewert mit if
if (int.TryParse(inputString, out convertedInt))
{
// convertedInt will have the converted value
// Proceed with that
}
else
{
// Display an error message
}
Verwendung 3: Ohne den Rückgabewert zu überprüfen, können Sie Folgendes verwenden, wenn Sie sich nicht um den Rückgabewert kümmern (konvertiert oder nicht, 0
wird in Ordnung sein)
int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted