Freigeben über


Gewusst wie: Konvertieren einer Zeichenfolge in eine Zahl (C#-Programmierhandbuch)

Sie können eine Zeichenfolge mithilfe von Methoden in der Convert-Klasse in eine Zahl konvertieren. Eine solche Konvertierung kann z. B. beim Erhalt numerischer Eingaben von einem Befehlszeilenargument nützlich sein. In der folgenden Tabelle werden einige der Methoden aufgelistet, die Sie verwenden können.

Numerischer Typ

Methode

decimal

ToDecimal(String)

float

ToSingle(String)

double

ToDouble(String)

short

ToInt16(String)

int

ToInt32(String)

long

ToInt64(String)

ushort

ToUInt16(String)

uint

ToUInt32(String)

ulong

ToUInt64(String)

Beispiel

In diesem Beispiel wird die ToInt32(String)-Methode aufgerufen, um einen Eingabe-string in einen int-Datentyp zu konvertieren. Das Programm fängt die zwei häufigsten Ausnahmen ab, die von dieser Methode ausgelöst werden können, FormatException und OverflowException. Wenn die Zahl inkrementiert werden kann, ohne dass der integer-Speicherbereich überläuft, fügt das Programm dem Ergebnis 1 hinzu und druckt die Ausgabe.

static void Main(string[] args)
{
    int numVal = -1;
    bool repeat = true;

    while (repeat == true)
    {
        Console.WriteLine("Enter a number between −2,147,483,648 and +2,147,483,647 (inclusive).");

        string input = Console.ReadLine();

        // ToInt32 can throw FormatException or OverflowException. 
        try
        {
            numVal = Convert.ToInt32(input);
        }
        catch (FormatException e)
        {
            Console.WriteLine("Input string is not a sequence of digits.");
        }
        catch (OverflowException e)
        {
            Console.WriteLine("The number cannot fit in an Int32.");
        }
        finally
        {
            if (numVal < Int32.MaxValue)
            {
                Console.WriteLine("The new value is {0}", numVal + 1);
            }
            else
            {
                Console.WriteLine("numVal cannot be incremented beyond its current value");
            }
        }
        Console.WriteLine("Go again? Y/N");
        string go = Console.ReadLine();
        if (go == "Y" || go == "y")
        {
            repeat = true;
        }
        else
        {
            repeat = false;
        }
    }
    // Keep the console open in debug mode.
    Console.WriteLine("Press any key to exit.");
    Console.ReadKey();    
}
// Sample Output: 
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive). 
// 473 
// The new value is 474 
// Go again? Y/N 
// y 
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive). 
// 2147483647 
// numVal cannot be incremented beyond its current value 
// Go again? Y/N 
// Y 
// Enter a number between -2,147,483,648 and +2,147,483,647 (inclusive). 
// -1000 
// The new value is -999 
// Go again? Y/N 
// n 
// Press any key to exit.

Eine weitere Möglichkeit zur Konvertierung von string in int besteht in der Verwendung der Parse-Methode oder der TryParse-Methode der Int32-Struktur. Die ToUInt32-Methode verwendet Parse intern. Wenn das Format der Zeichenfolge nicht gültig ist, gibt Parse eine Ausnahme aus. TryParse gibt keine Ausnahme aus, sondern gibt den Wert false zurück. Die unten stehenden Beispiele zeigen erfolgreiche sowie nicht erfolgreiche Aufrufe von Parse und TryParse.

int numVal = Int32.Parse("-105");
Console.WriteLine(numVal);
// Output: -105
// TryParse returns true if the conversion succeeded 
// and stores the result in the specified variable. 
int j;
bool result = Int32.TryParse("-105", out j);
if (true == result)
    Console.WriteLine(j);
else
    Console.WriteLine("String could not be parsed.");
// Output: -105
try
{
    int m = Int32.Parse("abc");
}
catch (FormatException e)
{
    Console.WriteLine(e.Message);
}
// Output: Input string was not in a correct format.
string inputString = "abc";
int numValue;
bool parsed = Int32.TryParse(inputString, out numValue);

if (!parsed)
    Console.WriteLine("Int32.TryParse could not parse '{0}' to an int.\n", inputString);

// Output: Int32.TryParse could not parse 'abc' to an int.

Siehe auch

Aufgaben

Gewusst wie: Bestimmen, ob eine Zeichenfolge einen numerischen Wert darstellt (C#-Programmierhandbuch)

Referenz

Typen (C#-Programmierhandbuch)

Weitere Ressourcen

Formatierungsdienstprogramm für .NET Framework 4