HOWTO · Csharp

Zahlen, Ganzzahltext und unterstützte Werte in C# nach int konvertieren

In C# hängt die passende Umwandlung in int von der Eingabe ab: Verwenden Sie einen (int)-Cast für numerische Werte, int.Parse() für Ganzzahltext oder Convert.ToInt32() für unterstützte Werte.

Auf dieser Seite

Wählen Sie in C# die Konvertierung passend zur Eingabe: Verwenden Sie den (int)-Cast für einen numerischen Wert, int.Parse() für Text, der eine Ganzzahl darstellt, und Convert.ToInt32() für unterstützte Werte, die konvertiert werden müssen. Die Methoden unterscheiden sich darin, wie sie mit Nachkommastellen, null und nicht konvertierbaren Eingaben umgehen.

Einen numerischen Wert mit dem (int)-Cast in int umwandeln

Ein numerischer Cast ist die direkte Wahl, wenn ein Wert bereits einen numerischen Typ hat. Der Cast-Ausdruck konvertiert den Wert, ohne Text zu parsen. Bei Gleitkomma- und Dezimalwerten schneidet die Umwandlung in int den Nachkommateil in Richtung null ab: 42.9 wird zu 42, während -42.9 zu -42 wird. Das Beispiel konvertiert einen numerischen Wert und gibt das Ergebnis aus.

using System;

class Program
{
    static void Main()
    {
        double value = 42.9;
        int result = (int)value;
        Console.WriteLine(result);
    }
}
42

Der Cast funktioniert mit kompatiblen numerischen Typen; einen String wie "42" parst er nicht. Liegt ein Gleitkommawert außerhalb des int-Wertebereichs, ist das Ergebnis einer ungeprüften Konvertierung nicht festgelegt. In einem geprüften Kontext löst eine Konvertierung außerhalb des Wertebereichs eine OverflowException aus. Verwenden Sie checked((int)value), wenn ein Überlauf gemeldet werden soll, oder prüfen Sie den Wertebereich vor der Konvertierung. Weitere Informationen finden Sie in Microsofts Leitfaden zu Casts und Typkonvertierungen.

Einen Ganzzahl-String mit int.Parse() parsen

Verwenden Sie int.Parse(), wenn die Eingabe ein String mit einer Ganzzahl ist, etwa Text aus einem Formular oder einer Konfigurationsdatei. Die Methode gibt einen int zurück, wenn der Text dem zulässigen Ganzzahlformat entspricht. Das Beispiel parst einen String und gibt die resultierende Zahl aus.

using System;

class Program
{
    static void Main()
    {
        string text = "42";
        int result = int.Parse(text);
        Console.WriteLine(result);
    }
}
42

int.Parse() konvertiert weder beliebigen Text noch ein numerisches Objekt, sondern parst einen String. Bei einem null-String wird eine ArgumentNullException ausgelöst, bei Text, der keine gültige Ganzzahl darstellt, eine FormatException und bei einem Wert außerhalb des int-Wertebereichs eine OverflowException. Verwenden Sie für möglicherweise ungültige Benutzereingaben int.TryParse() und verarbeiten Sie den booleschen Rückgabewert, damit ein Parse-Fehler den Vorgang nicht unterbricht. Standardmäßig gelten beim Parsen die Regeln der aktuellen Kultur. Geben Sie eine Kultur explizit an, wenn der Text aus einer Quelle mit einem bekannten Zahlenformat stammt.

Unterstützte Werte mit Convert.ToInt32() in int umwandeln

Convert.ToInt32() eignet sich, wenn die Eingabe ein unterstützter primitiver Wert sein kann, etwa eine Ganzzahl, ein Boolean, eine Gleitkommazahl, ein Dezimalwert oder ein String. Die Methode konvertiert nicht jeden denkbaren Typ; maßgeblich sind die verfügbaren Überladungen und IConvertible-Implementierungen. Bei einem String parst sie Ganzzahltext. Bei Gleitkomma- oder Dezimaleingaben rundet sie auf die nächste Ganzzahl und verwendet dabei die Rundung zur geraden Zahl bei exakten Halbwerten. Das unterscheidet sie vom Abschneiden durch (int).

using System;

class Program
{
    static void Main()
    {
        double value = 42.5;
        int result = Convert.ToInt32(value);
        Console.WriteLine(result);
    }
}
42

Bei diesem Halbwert ergibt die Rundung zur geraden Zahl 42; der Wert 43.5 ergibt 44. Convert.ToInt32() gibt bei einer null-Referenz 0 zurück. Nicht unterstützte Konvertierungen, fehlerhafte Strings und Werte außerhalb des int-Wertebereichs können dagegen Ausnahmen auslösen. Wählen Sie die Methode, wenn ihre Konvertierungsregeln zur Eingabe passen; verwenden Sie int.Parse(), wenn die Eingabe ausdrücklich Ganzzahltext ist, und einen Cast, wenn ein numerischer Wert abgeschnitten werden soll.