Поделиться через


Практическое руководство. Преобразование строкового значения в значение типа int (Руководство по программированию на C#)

В следующих примерах показано как преобразовать строку в значение типа int. Такое преобразование можно использовать, к примеру, при получении числовых входных данных из аргументов командной строки. Существуют аналогичные методы преобразования строк в другие числовые типы, такие как float и long. В следующей таблице перечислены некоторые из этих методов.

Числовой тип

Метод

decimal

ToDecimal(String)

float

ToSingle(String)

double

ToDouble(String)

short

ToInt16(String)

long

ToInt64(String)

ushort

ToUInt16(String)

uint

ToUInt32(String)

ulong

ToUInt64(String)

Пример

В данном примере вызывается метод ToInt32(String) для преобразования входных данных типа string в значение типа int. Программа перехватывает два наиболее распространенных исключения, которые могут создаваться данным методом. Если число может быть увеличено без переполнения места хранения целого числа, программа добавляет к результату 1 и печатает выходные данные.

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();    

Также можно преобразовать значение типа string в значение типа int с помощью методов Parse или TryParse структуры System.Int32. Метод ToUInt32 использует Parse внутри себя. Если строка имеет недопустимый формат, метод Parse создает исключение, а метод TryParse не создает исключение, но возвращает значение false. В приведенных ниже примерах демонстрируются успешные и неуспешные вызовы методов Parse и 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.

См. также

Задачи

Практическое руководство. Определение представления числового значения в строке (Руководство по программированию в C#)

Ссылки

Типы (Руководство по программированию на C#)