Другие языки программирования и технологии
С#, для чего нужно преобразование?
Начала изучать язык буквально вчера, и теперь буду сыпать сюда потенциально глупыми, но важными для меня вопросами. Вопрос сегодняшнего дня - для чего нужны явные и неявные преобразования данных? В смысле, на практике в каких ситуациях мне может понадобиться преобразование? Буду благодарна за простой, доходчивый ответ без насмешек. Я не волшебник, я только учусь.
Явное преобразование является хорошим тоном программирование, и исходит из того, что разработчик, на любом этапе выполнения программного кода должен точно быть уверен, какой тип имеет та или иная переменная. Связано это с парадигмой о предсказуемости результатов выполнения. Без преобразования получается печаль, которая происходит с пхп. Если хотите изучать программирование, следует так же познакомиться с таким чудесным произведением, как "Искусство программирования" Кнута
Юра Вышнивецкий
Спасибо, обязательно прочитаю.
Самое простое: число в компе и символы, которыми оно изображается, совершенно разные вещи. Как тут без преобразований?
Данные имеют типы. Например, операции с числами целого типа производятся по иным правилам, чем с числами вещественного типа. Изменяя, явно или неявно, тип данных, мы можем использовать с ними операции, предназначенные для другого типа и дающие другие результаты.
1. Все, что написано в окне, и все, что вводит пользователь, по умолчанию строки.
Если же вам надо, чтобы он ввел или вы ему вывели число - придется преобразовывать строку в число или обратно.
2. Если у вас число одного типа, а метод класса, который вы хотите использовать, принимает другой тип - придется преобразовать, иначе метод не станет работать.
Если же вам надо, чтобы он ввел или вы ему вывели число - придется преобразовывать строку в число или обратно.
2. Если у вас число одного типа, а метод класса, который вы хотите использовать, принимает другой тип - придется преобразовать, иначе метод не станет работать.
неявные преобразования нужны для удобства, чтоб меньше писать. Зачем необходимы явные преобразования, ты поймёшь, когда будешь программировать (или из соображений наглядности/стиля).
Например:
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.
Например:
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
область памяти дабл больше чем у инт по этому инт туда без проблем поместится и ошибки не будет
если на оборот, часть битов потеряется
явные преобразования это есть знак плохого тона
т. е. считается что там где нужны преобразования - программа спроектированна неверно.
но конечно для C# это не совсем так ..
нужно понимать, что классы это структура данных
классы есть типы данных
структура данных как и (вообще всё) есть набор битов в стеке или куче (память)
разные типы данных имеют разную структуру
разные классы имеют
разную структуру
и занимаемую область памяти
естественно если мы решим присвоить переменной типа String переменную типа int
компилятор нас пошлёт куда подальше, так как структуры данных различны.
вот тут нужно явно ему говорить то что мы хотим присвоить
когда же структуры ...скажем так ..."совместимы"
их не нужно указывать явно, компилятор это сделает за нас
double a = 1.5
int b = 1
double c = b+a
область памяти дабл больше чем у инт по этому инт туда без проблем поместится и ошибки не будет
если на оборот, часть битов потеряется
Юра Вышнивецкий
Большое спасибо, очень доходчиво)
Похожие вопросы
- Несколько вопросов про преобразование типов в С++ и возможно не только.
- С++ преобразование отрицательных чисел в беззнаковый тип
- Разработать программу анализа или преобразования массива в Паскале
- Программа преобразования картинки в другую
- Про С++ .Не получается явное преобразование типов. Помогите разобраться. Код внутри.
- КОМПАС - 3D/Вставка изображения/преобразования в чертеж
- Здравствуйте! В фотошопе при преобразовании в CMYK - преобразуются все слои, в т. ч. и текст?
- LINK : fatal error LNK1123: сбой при преобразовании в COFF: файл недопустим или поврежден
- За сколько денег программисты сделают программу преобразования звуков речи в текст?
- Ро учебе нужно взять интервью у IT-специалиста