Неизменный означает, что после инициализации состояние объекта не может измениться.
Изменяемый означает, что он может.
Например, строки в .NET являются неизменяемыми.Всякий раз, когда вы выполняете операцию со строкой (обрезки, верхний регистр и т. Д.), Создается новая строка.
На практике, если вы хотите создать неизменный тип, вы разрешаете использовать только геттеры для него ине допускайте никаких изменений состояния (поэтому любое закрытое поле не может измениться после завершения работы конструктора).