Не понимаю, зачем во многих языках используется тип данных const, если можно создать int и не менять его? Прошу объяснить и привести пример.
С точки зрения семантики вы говорите, что это значение не будет изменяться - и программа проконтролирует это.
Самый банальный пример - число "пи", константа, которую можно объявить один раз и быть уверенным, что она не поменяется.
Даже в простых программах можно думать, что значение не меняется и где-то его поменять - а в сложных проектах, где множество неочевидных взаимосвязей между модулями и несколькими независимыми командами разработчиков гарантировать неизменяемость проще и удобнее через const.
Тут кстати хорошо напомнить вот о чём. Константы вшиваются сразу в код (при этом достигается копеечная, но всё же выгода) и это в .Net приводит к тому, что если вы меняете константы в одной сборке - то нужно перекомпилировать весь проект. Об этом написано во многих учебниках по шарпу, но случается забывают и наступают на эти грабли.
С точки зрения компилятора меняется следующее. Если у нас переменная - мы ей выделяем место в стеке/куче под хранение:
void Main()
{
var i = 10;
i.Dump();
}
Если мы объявляем константы - то места под хранение не выделяется, во всех местах, где нам нужна константа - подставляется её конкретное значение:
void Main()
{
const int i = 10;
i.Dump();
}
Здесь ldc - это load constant, а работа со стеком исчезла - нет этой переменной.
"можно создать int и не менять его"
Идея, конечно, хорошая, но никаких гарантий не даёт. С таким же успехом можно не надевать шлем при езде на мотоцикле, мотивируя это тем, что "я просто не буду попадать в аварии". К сожалению одного обещания, данного самому себе, как правило недостаточно. Вы можете забыть, что ваша переменная не должна меняться, и изменить её. Хуже того, очень часто код пишется сразу несколькими разработчиками, которые могут не знать, что переменную x менять нельзя, а переменную y - можно. Модификатор const подскажет это. Явно объявленный const облегчает понимание кода, делает его чуть более декларативным.
Кроме того, константные значения вычисляются на этапе компиляции, и это тоже неплохо. Помимо небольшой, но всё же имеющей место выгоды в плане производительности, очень серьёзным доводом в пользу const может оказаться тот факт, что ошибку, связанную с изменением константы вы увидите при компиляции, а ошибку, вызванную изменением переменной, которая должна быть константой, вы увидите только в рантайме, когда она уже (возможно) наделала бед.
Интересный вопрос как по мне. Вас никто не заставляет объявлять переменную типа const потому-что это только для вашего удобства и для общего понимания. Для небольших проектов, как отметил @AK, это не столь заметное применение, но все же удобно. Просто представьте ситуацию где у вас в проекте переменных одного типа штук 200, и вам их иногда но нужно изменять. Но есть пару значений которые изменять в крайне опасно, например для вычислений кредитов там где например проценты для всех сумм одинаковые и их менять ненужно. Было бы нехорошо если бы с вашим кодом работал бы не совсем опытный пользователь, и попытался изменить проценты из 5% например на 0.0001% если не меньше. Представьте какие бы компания потерпела убытки. А в случае с применение keyword const, у него бы указалась ошибка связана с изменением значение КОНСТАНТЫ, значение которой изменить нельзя.
Подробнее о данной сущности тут
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости