Класс Convert и разбор значений
Разбирайте и преобразуйте значения с помощью Convert и TryParse.
«Класс Convert и разбор значений» — бесплатный урок C# Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 4 уроков всего.
Преобразование строк в числа
Пользовательский ввод поступает в виде текста. Чтобы выполнять с ним вычисления, необходимо преобразовать строки в числа. В C# для этого есть Convert, Parse и TryParse.
using System;
class Program
{
static void Main()
{
string input = "42";
int number = int.Parse(input);
Console.WriteLine(number + 8);
}
}int.Parse
int.Parse преобразует строку с числом в значение типа int. Если текст не является допустимым числом, возникает исключение FormatException.
using System;
class Program
{
static void Main()
{
try
{
int n = int.Parse("abc");
Console.WriteLine(n);
}
catch (FormatException)
{
Console.WriteLine("Not a valid number");
}
}
}int.TryParse
int.TryParse позволяет избежать исключений: при успехе он возвращает true и помещает результат в параметр out, а при ошибке возвращает false.
using System;
class Program
{
static void Main()
{
if (int.TryParse("123", out int n))
Console.WriteLine("Parsed: " + n);
else
Console.WriteLine("Failed");
}
}TryParse для безопасного ввода
TryParse — предпочтительный способ обработки ненадёжного ввода, поскольку некорректный текст обрабатывается корректно, а не приводит к аварийному завершению.
using System;
class Program
{
static void Main()
{
string[] inputs = { "10", "oops", "30" };
int total = 0;
foreach (var s in inputs)
{
if (int.TryParse(s, out int v))
total += v;
}
Console.WriteLine("Total of valid: " + total);
}
}Класс преобразования
Класс Convert преобразует множество базовых типов: Convert.ToInt32, Convert.ToDouble, Convert.ToBoolean и другие.
using System;
class Program
{
static void Main()
{
int i = Convert.ToInt32("256");
double d = Convert.ToDouble("3.14");
bool b = Convert.ToBoolean("true");
Console.WriteLine(i + ", " + d + ", " + b);
}
}Convert обрабатывает пустое значение
В отличие от int.Parse, вызов Convert.ToInt32(null) возвращает 0, а не вызывает исключение. Это может быть как удобно, так и неожиданно.
using System;
class Program
{
static void Main()
{
string s = null;
int n = Convert.ToInt32(s); // returns 0
Console.WriteLine("Result: " + n);
}
}Преобразование между числовыми типами
Convert также преобразует один числовой тип в другой и округляет, а не усекает, значения с плавающей точкой при преобразовании в целые числа.
using System;
class Program
{
static void Main()
{
double d = 7.6;
int cast = (int)d; // truncates -> 7
int converted = Convert.ToInt32(d); // rounds -> 8
Console.WriteLine("cast=" + cast + ", convert=" + converted);
}
}Разбор других типов
У большинства встроенных типов есть собственные методы Parse/TryParse: double.TryParse, bool.TryParse, DateTime.TryParse и так далее.
using System;
class Program
{
static void Main()
{
bool okD = double.TryParse("2.5", out double d);
bool okB = bool.TryParse("True", out bool flag);
Console.WriteLine(okD + ":" + d + ", " + okB + ":" + flag);
}
}ToString для обратного преобразования
Чтобы преобразовать число обратно в текст, вызовите ToString(), при необходимости передав ему строку формата.
using System;
class Program
{
static void Main()
{
int n = 255;
double price = 12.5;
Console.WriteLine(n.ToString());
Console.WriteLine(price.ToString("C")); // currency format
}
}Выбор подходящего средства
Используйте TryParse для пользовательского ввода, которому нельзя доверять, Parse — когда корректность ввода гарантирована, а Convert — при обработке пустых значений или преобразовании между множеством типов.
using System;
class Program
{
static void Main()
{
string userInput = "55x";
int value = int.TryParse(userInput, out int v) ? v : -1;
Console.WriteLine(value == -1 ? "Invalid input" : "Got " + value);
}
}Объединяем всё вместе
Надёжный процесс обработки ввода проверяет данные с помощью TryParse, при ошибке использует значение по умолчанию, а затем безопасно выполняет вычисления.
using System;
class Program
{
static int ReadAge(string input)
{
if (int.TryParse(input, out int age) && age >= 0)
return age;
return 0; // safe default
}
static void Main()
{
Console.WriteLine("Age: " + ReadAge("28"));
Console.WriteLine("Age: " + ReadAge("bad"));
}
}Быстрая проверка
Проверьте, насколько хорошо Вы понимаете разбор и преобразование данных.
Повторение
Преобразовать текст в числа можно с помощью int.Parse (вызывает исключение при некорректном вводе), int.TryParse (безопасен, возвращает логическое значение и значение out) или класса Convert (обрабатывает пустые значения, округляет числа с плавающей точкой и преобразует множество типов). Для ненадёжного ввода предпочтителен TryParse, а для обратного преобразования — ToString().
using System;
class Program
{
static void Main()
{
if (int.TryParse("99", out int n))
Console.WriteLine("Value: " + n);
Console.WriteLine("Convert: " + Convert.ToInt32("7"));
}
}Часто задаваемые вопросы
Урок «Класс Convert и разбор значений» бесплатный?
Да — полный текст урока «Класс Convert и разбор значений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 4 уроков всего.
Чему я научусь в уроке «Класс Convert и разбор значений»?
Разбирайте и преобразуйте значения с помощью Convert и TryParse. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Класс Convert и разбор значений»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Типы значений и ссылочные типы
- Упаковка и распаковка
- Неявные и явные преобразования
- Класс Convert и разбор значений