Я думаю, что проблема в том, что вы путаете переменные со значениями.Переменная - это просто имя места, в котором может храниться значение (для типов значений) или ссылка на значение (для ссылочных типов).Для целей нашего обсуждения здесь не имеет значения, как / где хранится эта переменная, поскольку мы говорим об неизменности значений .
Когда вы присваиваете значение '7'целочисленной переменной, то значение' 7 'всегда будет' 7 '.В вашем коде вы ничего не можете сделать, чтобы он когда-либо отличался от '7'.Что бы это значило, если бы оно было изменчивым?Это было бы похоже на изменение «7» на «12», а затем на любую другую переменную в вашей программе, которая ранее содержала «7», теперь вместо «12».
Это немного понятнее, если вывместо этого посмотрите на неизменяемый ссылочный тип, например «string».Если я установлю a = "Test"
, b = a
, a = "Test2"
, значение b все равно будет "Тест".Обычно невозможно изменить содержимое строки (не нарушая инвариантов, выполняя такие вещи, как тайный доступ к частной памяти), поэтому мы называем строковые значения неизменяемыми.Вы можете полагаться на тот факт, что после сохранения ссылки на строку в переменной значение строки, на которое она ссылается, никогда не изменится.