Udostępnij za pośrednictwem


Porady: konwertowanie ciągu na liczbę (Przewodnik programowania w języku C#)

Ciąg można przekonwertować na dowolną liczbę, używając metod dostępnych w klasie Convert.Taka konwersja może być przydatna na przykład, gdy z argumentu wiersza polecenia są uzyskiwane dane liczbowe.W poniższej tabeli przedstawiono niektóre metody, których można użyć.

Typ liczbowy

Metoda

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)

Przykład

W tym przykładzie jest wywoływana metoda ToInt32(String) w celu przekonwertowania ciągu wejściowego na wartość typu int.Program przechwytuje dwa najpopularniejsze wyjątki, które mogą zostać zgłoszone przez tę metodę — FormatException i OverflowException.Jeśli liczbę można zwiększyć bez przepełnienia lokalizacji magazynu liczb całkowitych, program dodaje do wyniku 1 i drukuje dane wyjściowe.

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.

Inną metodą konwersji wartości typu string na wartość typu int jest użycie metody Parse lub TryParse dostępnej w strukturze Int32.Metoda ToUInt32 używa wewnętrznie metody Parse.Jeśli ciąg nie ma prawidłowego formatu, metoda Parse zgłasza wyjątek, a metoda TryParse nie zgłasza wyjątku, ale zwraca wartość false.W przykładach pokazano zarówno udane, jak i nieudane wywołania metod Parse i 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.

Zobacz też

Zadania

Porady: określanie, czy ciąg reprezentuje wartość numeryczną (Przewodnik programowania w języku C#)

Informacje

Typy (Przewodnik programowania w języku C#)

Inne zasoby

Narzędzia formatowania programu .NET framework 4