JavaRush /Курсы /C# SELF /Конвертация между типами данных

Конвертация между типами данных

C# SELF
2 уровень , 3 лекция
Открыта

1. Зачем нужна конвертация типов?

C# — это строго типизированный язык. Если у компьютера есть “коробочка” для числа, то попытка засунуть туда текст — примерно то же самое, что и попытка вставить вилку в USB-разъём. Компилятор вам такое не простит! 😡

Однако, в жизни мы часто работаем одновременно с разными типами данных. Например, у вас есть строка, которая содержит число. Вот тут-то и нужна конвертация (или преобразование) типов.

Рассмотрим пример. Допустим, вы хотите хранить количество пользователей:

int a = 1;
int b = "2";
int c = "три";

Компилятор тут сразу скажет: “Ты меня за кого держишь? Я не умею автоматически преобразовывать строку в число, без тебя никак. Нужно привести строку к числу явно".

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

2. Преобразовываем int в string

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

Функция ToString()

Это основной и самый распространённый способ:

int number = 42;
string str = number.ToString();  // str == "42"

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

Строковая интерполяция ($"...")

Современный способ, удобный для составления строк с переменными:

int number = 42;
string str = $"Число: {number}";

Интерполяция строк автоматически вызывает ToString() для вставляемого значения.

Можно комбинировать несколько переменных и даже указывать формат:

int number = 42;
string str = $"{number:D5}"; // "00042" — пять цифр с ведущими нулями

Конкатенация с пустой строкой

Старый, но рабочий способ:

int number = 42;
string str = number + "";

Такой подход быстро работает для простых случаев, но менее явен для читающего код программиста.

3. Неявное преобразование в строку

Как уже говорилось выше, разработчики C# сделали так, что абсолютно все переменные, объекты, выражения в C# можно преобразовать к типу string.

Более того, это автоматически происходит, когда мы складываем тип string с каким-нибудь другим типом. Примеры:

int a = 5;
string name = "Аня" + a;            //  name содержит строку Аня5

int a = 5;
string city = a + "New York" + a;   //  city содержит строку 5New York5

int number = 10;
string code = "Yo";
string message = "Hello! " + number + code; //  message содержит строку Hello! 10Yo

Во всех трех примерах мы спокойно складывали переменные типа int и string, и в результате всегда получался тип string.

Важно! Арифметические операции с типом string проводить нельзя. Даже если строка целиком состоит из цифр.

Примеры:

int a = 5;
string name = "1" + a;              //  name содержит строку 15

int a = 5;
string city = a + "9" + a;          //  city содержит строку 595

int number = 10;
string code = "10";
string message = "" + number + code; // message содержит строку 1010 

Операция сложения выполняется слева направо, так что результат может быть несколько неожиданным. Пример:

int a = 5;
string name = a + a + "1" + a;      // name содержит строку 1015

Порядок выполнения: ((a + a) + "1") + a

4. Преобразование строки в число

Чтобы преобразовать число в строку в C#, достаточно сложить его и пустую строку:

string str = "" + число;

А что делать, если нужно преобразовать строку в число? Ну, любую строку в число преобразовать нельзя. Но если строка состоит только из цифр, то все-таки можно. Для этого у типа int есть специальная функция Parse().

Выглядит эта команда так:


int x = int.Parse("строка")
Преобразование строки в число

Где int x — это объявление целочисленной переменной x, а строка — это число, заданное в виде строки (строка, состоящая из цифр).

Примеры:

string str = "123";
int number1 = int.Parse(str);        //  number1 содержит число 123;

int number2 = int.Parse("321");      //  number2 содержит число 321

int number3 = int.Parse("321" + 0);  //  number3 содержит число 3210

int number4 = "321"; //  Не скомпилируется: переменная типа int, а значение типа string

Для отрицательных значений это тоже работает: функция int.Parse() очень умная.

2
Задача
C# SELF, 2 уровень, 3 лекция
Недоступна
Преобразование числа в строку
Преобразование числа в строку
2
Задача
C# SELF, 2 уровень, 3 лекция
Недоступна
Преобразование строки в число
Преобразование строки в число
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Дмитрий Уровень 1
4 ноября 2025
Кто за сколько попыток решает?
Nikita Sazhin Уровень 2
22 декабря 2025
Решения элементарные, но из-за строгой авто-проверки периодически приходится дописать то точку, то пробел...
Александр Уровень 39
9 сентября 2025
изян