C# Programming

Надежная конвертация строки в целое число в C#

Spread the love

Преобразование строк в целые числа — фундаментальная задача в программировании на C#. В этой статье рассматриваются наиболее эффективные и надежные методы, с упором на лучшие практики обработки различных сценариев и потенциальных ошибок.

Оглавление

Надежные методы TryParse()

Методы TryParse() (например, Int32.TryParse(), Int64.TryParse(), Int16.TryParse()) обычно являются предпочтительным подходом для преобразования строк в целые числа в C#. Они предлагают значительное преимущество перед методами Parse(), избегая исключений. Вместо этого они возвращают булево значение, указывающее на успех или неудачу, возвращая разобранное целое число через параметр out.

Этот подход повышает эффективность и читаемость кода, устраняя необходимость в блоках try-catch. TryParse() также корректно обрабатывает исключения переполнения, возвращая false вместо выброса исключения.


string strNumber = "12345";
int number;
bool success = Int32.TryParse(strNumber, out number);

if (success)
{
    Console.WriteLine("Целочисленное значение: " + number);
}
else
{
    Console.WriteLine("Неверный ввод. Строка не является допустимым целым числом.");
}

Методы Parse(): простые, но рискованные

Методы Parse() (например, Int32.Parse(), Int64.Parse(), Int16.Parse()) предлагают более краткий способ преобразования строк в целые числа, но у них есть существенный недостаток: они вызывают исключения (FormatException), если входная строка не является допустимым представлением целого числа. Это требует использования блоков try-catch, что добавляет сложность и потенциальные накладные расходы на производительность.


string strNumber = "12345";
int number;

try
{
    number = Int32.Parse(strNumber);
    Console.WriteLine("Целочисленное значение: " + number);
}
catch (FormatException)
{
    Console.WriteLine("Неверный ввод. Строка не является допустимым целым числом.");
}

Несмотря на более простой синтаксис, повышенный риск необработанных исключений делает TryParse() более безопасной и, как правило, лучшей альтернативой.

Методы Convert.ToInt*(): альтернативы для рассмотрения

Класс Convert предоставляет методы, такие как Convert.ToInt32(), Convert.ToInt64() и Convert.ToInt16(). Функционально аналогичные Parse(), они также вызывают исключения при неудаче. Они могут предлагать небольшие различия в обработке пробелов или пограничных случаев, но они разделяют ту же уязвимость к исключениям, что делает TryParse() более надежным вариантом.


string strNumber = "12345";
int number;

try
{
    number = Convert.ToInt32(strNumber);
    Console.WriteLine("Целочисленное значение: " + number);
}
catch (FormatException)
{
    Console.WriteLine("Неверный ввод. Строка не является допустимым целым числом.");
}

Выбор подходящего метода для ваших нужд

В большинстве сценариев рекомендуется использовать TryParse(). Его безопасность обработки исключений и эффективность делают его лучшим выбором. Используйте Parse() или Convert.ToInt*() только в том случае, если у вас есть очень веская причина для прямой обработки исключений в вашем коде и вы понимаете потенциальные последствия для производительности. Всегда выбирайте соответствующий целочисленный тип (Int16, Int32, Int64) в зависимости от ожидаемого диапазона ваших входных значений.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *