0Pricing
C# Academy · Урок

Класс 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 — локальная установка не требуется.

Все уроки этого курса

  1. Типы значений и ссылочные типы
  2. Упаковка и распаковка
  3. Неявные и явные преобразования
  4. Класс Convert и разбор значений
← Назад к C# Academy