В чем разница между изменчивым и неизменным?

Может ли кто-нибудь помочь мне найти основную разницу между изменчивым и неизменным?

 Hemant Kumar28 сент. 2010 г., 10:51
Спасибо одному и алле
 leppie28 сент. 2010 г., 10:40
Э-э-э, один может измениться, другой нет! Кажется, сегодня день особых вопросов ...
 LukeH28 сент. 2010 г., 10:51
Виды Неизменности:blogs.msdn.com/b/ericlippert/archive/2007/11/13/...

Ответы на вопрос(7)

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

Решение Вопроса

Неизменный означает, что после инициализации состояние объекта не может измениться.

Мутабельный означает, что может.

Например - строки в .NET являются неизменяемыми. Всякий раз, когда вы выполняете операцию со строкой (обрезки, верхний регистр и т. Д.), Создается новая строка.

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

 Andrey28 сент. 2010 г., 10:43
DateTime это еще один.
 leppie28 сент. 2010 г., 10:46
@ Андрей: это ошибка программиста, если значение типа изменчиво :)


imaginationhunt.blogspot

СТРУГА МОЖНА ИЛИ НЕММУТНА В .NET?

Изменяемый: изменяемый означает, чье состояние может быть изменено после его создания.
Неизменяемый: Неизменяемый означает, чье состояние не может быть изменено после его создания.

Строковые объекты являются «неизменяемыми», это означает, что мы не можем изменять символы, содержащиеся в строке, и операция над строкой создает измененную версию, а не изменяет символы строки.

ование термина «переменная» неуместно, и функциональные программисты предпочитают термин «значение».

1 поток безопасности
2 Обмен
3 Меньше ошибок

Поэтому предпочитайте неизменность, если у вас есть выбор. :)

Неизменный означает «нельзя изменить после создания».

Неизменяемый тип имеет конструктор и геттеры, но не сеттеры.Изменяемый тип также может иметь сеттеры.

Примером неизменяемого типа является DateTime. МетодAddMinutes не изменяет объект - он создает и возвращает новый DateTime.

Другой пример - строка. Для изменяемого класса, похожего на строку, вы можете использовать классStringBuilder.

В C # нет ключевого слова, чтобы объявить тип неизменным. Вместо этого вы должны пометить все поля-члены какreadonly чтобы убедиться, что они могут быть установлены только в конструкторе. Это предотвратит случайное изменение одного из полей, нарушая неизменность.

очень простое определение было бы:

Изменчивые объекты: Если у вас есть ссылка на экземпляр объекта, содержимое этого экземпляра может быть изменено

Неизменные объекты: Если у вас есть ссылка на экземпляр объекта, содержимое этого экземпляра не может быть изменено

Ваш ответ на вопрос