Suche…


String in Ganzzahl konvertieren

Es gibt verschiedene Methoden, um eine string explizit in eine integer konvertieren, z.

  1. Convert.ToInt16();

  2. Convert.ToInt32();

  3. Convert.ToInt64();

  4. int.Parse();

Alle diese Methoden FormatException eine FormatException , wenn die Eingabezeichenfolge nicht numerische Zeichen enthält. Dafür müssen wir eine zusätzliche Ausnahmebehandlung ( try..catch ) schreiben, um sie in solchen Fällen zu behandeln.


Erklärung mit Beispielen:

Also sei unsere Eingabe:

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 genannten 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 gesagt, 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 die Verwendung von try..catch wird nicht überall eine gute Praxis, und es können einige Szenarien, in denen wir wollten geben 0 , wenn der Eingang nicht stimmt, (Wenn wir das obige Verfahren folgen müssen wir zuweisen 0 bis convertedInt aus der Fangblock). Um solche Szenarien zu handhaben, können wir eine spezielle Methode namens .TryParse() .

Die .TryParse() -Methode verfügt über eine interne Ausnahmebehandlung, die Ihnen die Ausgabe an den out Parameter gibt und einen booleschen Wert zurückgibt, der den Konvertierungsstatus angibt ( true wenn die Konvertierung erfolgreich war; false wenn sie fehlgeschlagen ist) Anhand des Rückgabewerts können wir den Konvertierungsstatus ermitteln. Schauen 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 nach der Ausführung überprüfen, um den Konvertierungsstatus zu überprüfen. Wenn es falsch ist, ist der Wert von convertedInt 0 (keine Notwendigkeit, den Rückgabewert zu überprüfen, wenn 0 für einen Konvertierungsfehler gewünscht wird).

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 für den Rückgabewert interessieren (konvertiert oder nicht, 0 ist in Ordnung)

int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow