Оглавление:
Определение - Что означает Shallow Copy?
Мелкая копия в C # - это процесс создания клона объекта путем создания экземпляра нового экземпляра того же типа, что и у исходного объекта, и копирования нестатических членов существующего объекта в клон. Члены типа значения копируются по битам, в то время как члены ссылочного типа копируются так, что упомянутый объект и его клон ссылаются на один и тот же объект.
Как правило, поверхностное копирование используется, когда производительность является одним из требований наряду с условием, что объект не будет видоизменяться во всем приложении. Передача клона, содержащего неизменяемые данные, исключает возможность повреждения любым кодом. Обнаружено, что поверхностное копирование является эффективным, когда ссылки на объекты позволяют объектам передаваться по адресу памяти, так что весь объект не нужно копировать.
Мелкая копия также называется членной копией.
Техопедия объясняет мелкое копирование
Мелкое копирование аналогично глубокому копированию при назначении каждого члена объекта тому же другому объекту, но отличается тем, как копируется поле ссылочного типа. В отличие от мелкой копии, где ссылка только копируется, в глубокой копии создается новая копия упомянутого объекта.
Например, рассмотрим объект сотрудника, который содержит подробную информацию о личной информации, включая список объектов адреса, в которых хранится несколько адресов сотрудников. Выполняя поверхностную копию объекта сотрудника, можно создать клон объекта сотрудника со ссылками на тот же список объектов адреса, которые принадлежат исходному объекту сотрудника.
Способы выполнения мелкого копирования включают в себя:- Вызовите метод MemberwiseClone объекта
- Создать клон вручную с помощью пользовательского метода, который утомителен, но прост в управлении
- Используйте технику отражения, которая предоставляет автоматизированное средство для выполнения мелкого копирования, но с накладными расходами
- Используйте метод сериализации, который медленнее, чем отражение, но автоматизирован и прост
