Является ли чистый тип таким же, как неизменный?

Я просматривал документацию PureAttribute в MSDN, и я был удивлен, что ее можно применять на уровне класса. Я знал, что такое чистая функция, но я никогда не видел, чтобы она применялась к типу. В документации MSDN указано следующее:

Указывает, что тип типа или метод является чистым, то есть он не производит никаких видимых изменений состояния.

(выделено жирным шрифтом для выделения целей)

Итак, мой вопрос: если чистый тип не производит каких-либо видимых изменений состояния, это то же самое, что и неизменный тип? Оба термина, если они применяются на уровне типа, эквивалентны? Если нет, может ли кто-нибудь показать мне пример чистого типа, который не является неизменным или наоборот.

Ответы

Ответ 1

Нет, это не одно и то же:

  • У неизменяемого типа могут быть методы, которые мутируют другой объект, и это не будет чистым.

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