Является ли чистый тип таким же, как неизменный?
Я просматривал документацию PureAttribute
в MSDN, и я был удивлен, что ее можно применять на уровне класса. Я знал, что такое чистая функция, но я никогда не видел, чтобы она применялась к типу. В документации MSDN указано следующее:
Указывает, что тип типа или метод является чистым, то есть он не производит никаких видимых изменений состояния.
(выделено жирным шрифтом для выделения целей)
Итак, мой вопрос: если чистый тип не производит каких-либо видимых изменений состояния, это то же самое, что и неизменный тип? Оба термина, если они применяются на уровне типа, эквивалентны? Если нет, может ли кто-нибудь показать мне пример чистого типа, который не является неизменным или наоборот.
Ответы
Ответ 1
Нет, это не одно и то же:
-
У неизменяемого типа могут быть методы, которые мутируют другой объект, и это не будет чистым.
-
С другой стороны, тип может выставлять изменяемые поля и все же иметь только чистые методы, которые не изменяют эти поля.