Я пытаюсь понять неизменные типы. Я знаю, что строка неизменна, а также анонимный тип, delagates, но как насчет этих? Какие из них неизменны в C# и почему? Не могли бы вы объяснить это?
набор данных, Этикетка, DateTime, объект, ArrayListНеизменяемые типы в C#
ответ
DateTime
является struct
(= тип значения) и неизменны, а остальное (DataSet, Label, object, ArrayList
) изменчивы:
Объект типа DateTime
не могут быть изменены - все методы на нем возвращают новый объект DateTime
. Все остальные могут быть изменены.
object
немного особенный, так как это может быть «что угодно», и поэтому AFAIK он не называется неизменяемым.
В целом «неизменный» означает, что объект не может быть изменен после его создания. Как правильно указано Тимом struct
, s по умолчанию изменяются, но часто реализуются неизменно. Таким образом, значение типа может быть изменчивым, но в большинстве случаев это не так. См. Пример THIS, что случается, когда вы используете изменяемый тип значения.
'object' не обязательно изменяемы: 'object o = new object() 'неизменен, и вы не можете мутировать через тип переменной' object'. – Lee
Стоит упомянуть, что такие типы значений, как 'structs' _can_, являются изменяемыми, хотя в основном это не так. Если тип изменен, зависит от реализации. –
@ChrFin: как вы уже сказали, объекты могут быть любыми. Но если вы создадите «пустой» объект, как это сделал Ли, он является неизменным, потому что нет свойств или полей для изменения. Как вы хотите изменить что-то, что нечего менять ?! –
- 1. Неизменяемые типы и характеристики
- 2. Неизменяемые типы как свойства конфигурации
- 3. Неизменяемые типы, позволяющие подклассы в Python
- 4. Неизменяемые типы в Java против Python
- 5. Неизменяемые классы в C++
- 6. неизменяемые свойства объекта в C#
- 7. Неизменяемые типы (особенно коллекции) и ковариация в java
- 8. Работает ли неизменяемые типы для этой проблемы кэширования
- 9. Почему SetIndex из SharedArray жалуется на неизменяемые типы?
- 10. C# Неизменяемые классы в бизнес-приложениях
- 11. Неизменяемые массивы в .net (C#): разумный подход?
- 12. ORM, поддерживающий неизменяемые классы
- 13. Использует ли только неизменяемые типы данных безопасный поток программ Java?
- 14. DataContractSerializer и неизменяемые типы. Дессериализация на экземпляр известного объекта
- 15. Передача и сохранение указателей на неизменяемые типы и строки в C#
- 16. Неизменяемые бобы в Java
- 17. Неизменяемые подклассы
- 18. Неизменяемые классы в java
- 19. Неизменяемые строки в java?
- 20. Неизменяемые переменные в OCaml
- 21. Неизменяемые коллекции в Java
- 22. Неизменяемые строки в Go
- 23. C# Неизменяемые классы и игровые объекты
- 24. Кэшированные или предварительно вычисленные неизменяемые функции в C#/C++
- 25. Неизменяемые графоподобные структуры в Скале
- 26. Глобальные неизменяемые переменные
- 27. Типы данных C++ и типы данных C#
- 28. Неизменяемые игровые объекты
- 29. Экзистенциальные типы в C#?
- 30. типы в интерфейсах C#
'DataTime' неизменны, 'object' имеет неизменный интерфейс, хотя реальный тип может быть изменчивым. Остальные изменчивы. – Lee
'ArrayList' является изменяемым (вы можете изменить элемент в' ArrayList': 'a [1] = a [0]') –
отличный способ дать возможность выполнять ваши задания другими: P – Neel