Другие языки программирования и технологии

С#, для чего нужно преобразование?

Начала изучать язык буквально вчера, и теперь буду сыпать сюда потенциально глупыми, но важными для меня вопросами. Вопрос сегодняшнего дня - для чего нужны явные и неявные преобразования данных? В смысле, на практике в каких ситуациях мне может понадобиться преобразование? Буду благодарна за простой, доходчивый ответ без насмешек. Я не волшебник, я только учусь.
Явное преобразование является хорошим тоном программирование, и исходит из того, что разработчик, на любом этапе выполнения программного кода должен точно быть уверен, какой тип имеет та или иная переменная. Связано это с парадигмой о предсказуемости результатов выполнения. Без преобразования получается печаль, которая происходит с пхп. Если хотите изучать программирование, следует так же познакомиться с таким чудесным произведением, как "Искусство программирования" Кнута
ЛК
Леонтий Кулик
5 558
Лучший ответ
Юра Вышнивецкий Спасибо, обязательно прочитаю.
Самое простое: число в компе и символы, которыми оно изображается, совершенно разные вещи. Как тут без преобразований?
Сметчик Уфа
Сметчик Уфа
70 287
Данные имеют типы. Например, операции с числами целого типа производятся по иным правилам, чем с числами вещественного типа. Изменяя, явно или неявно, тип данных, мы можем использовать с ними операции, предназначенные для другого типа и дающие другие результаты.
Виктор Авдеев
Виктор Авдеев
70 654
1. Все, что написано в окне, и все, что вводит пользователь, по умолчанию строки.
Если же вам надо, чтобы он ввел или вы ему вывели число - придется преобразовывать строку в число или обратно.
2. Если у вас число одного типа, а метод класса, который вы хотите использовать, принимает другой тип - придется преобразовать, иначе метод не станет работать.
AO
Andrej Ott
56 668
неявные преобразования нужны для удобства, чтоб меньше писать. Зачем необходимы явные преобразования, ты поймёшь, когда будешь программировать (или из соображений наглядности/стиля).
Например:
int a = 5;
int b = 2;
double d = a / b;
Здесь выполняется целочисленное деление, потом результат неявно преобразуется из int в double. Результат d == 2.0
double d = (double)a / b;
теперь d == 2.5. Поскольку а преобразован в double, выполняется деление для double.
похвально что такие хорошие девушки идут в программисты (нам приятнее работать (: )

явные преобразования это есть знак плохого тона
т. е. считается что там где нужны преобразования - программа спроектированна неверно.
но конечно для C# это не совсем так ..

нужно понимать, что классы это структура данных
классы есть типы данных

структура данных как и (вообще всё) есть набор битов в стеке или куче (память)

разные типы данных имеют разную структуру

разные классы имеют
разную структуру
и занимаемую область памяти

естественно если мы решим присвоить переменной типа String переменную типа int
компилятор нас пошлёт куда подальше, так как структуры данных различны.
вот тут нужно явно ему говорить то что мы хотим присвоить

когда же структуры ...скажем так ..."совместимы"
их не нужно указывать явно, компилятор это сделает за нас

double a = 1.5
int b = 1
double c = b+a

область памяти дабл больше чем у инт по этому инт туда без проблем поместится и ошибки не будет
если на оборот, часть битов потеряется
Юра Вышнивецкий Большое спасибо, очень доходчиво)