Что такое мелкая копия объекта

Возможный дубликат:
В чем разница между глубокой копией и мелкой копией?

Я видел это сегодня здесь: http://msdn.microsoft.com/en-us/library/system.web.routing.route.aspx, и одна из функций-членов была:
«MemberwiseClone - создает мелкую копию текущего объекта. (Унаследовано от Объект.) "
Так что же такое" неглубокая копия "стиха а ..." глубокая копия "?


person Letseatlunch    schedule 13.02.2011    source источник
comment
stackoverflow.com/questions/184710/   -  person ayush    schedule 13.02.2011
comment
@ayush спасибо, сейчас удалю вопрос   -  person Letseatlunch    schedule 13.02.2011


Ответы (1)


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

person H.B.    schedule 13.02.2011
comment
Как этот ответ прошел через o.O - person H.B.; 13.02.2011
comment
Я почти не понял, что это значит? Означает ли это, что мелкая копия на самом деле ничего не копирует? просто ссылки пропускает? В мелкой копии оба объекта будут действовать как один и тот же объект, вы имеете в виду? - person SSpoke; 26.06.2011
comment
@SSpoke: Ну, это можно проиллюстрировать с помощью коллекций, если у вас есть неглубокая копия коллекции, у вас есть две коллекции, где обе указывают на одни и те же элементы, если это глубокая копия, все элементы в скопированной коллекции также являются копиями. Неглубокая копия действительно что-то копирует: ссылки. Также см. повторяющийся вопрос и Википедия. - person H.B.; 26.06.2011
comment
Ну, я закончил тем, что использовал MemberwiseClone (), я предполагаю, что это то, что мне нужно, я пытаюсь исправить ошибку здесь, где два объекта, которые я оба использую для них, оператор присваивания = ... и они оба начинают изменять друг друга, что заставляет меня тянуть мои волосы распущены, потому что я хочу, чтобы они просто сохраняли координаты ... люди говорят мне использовать структуру вместо класса, я не могу использовать структуру, поскольку я использую класс для десериализации XML, поэтому я надеюсь, что эта неглубокая копия - то, что мне нужно! пока я думаю, что он работает нормально, мне нужно запустить несколько тестов позже. - person SSpoke; 26.06.2011
comment
@SSpoke: это одна из основных концепций, которые вы должны понимать при программировании: использование присваивания ссылочным типам не копирует объект, но обе ссылки будут указывать на один и тот же экземпляр объекта. - person H.B.; 26.06.2011
comment
Да, я понимаю это, но после прочтения википедии о неглубокой копии и глубокой копии кажется, что неглубокая копия делает то же самое, что и назначение, когда оба указателя копируются в один, и происходит совместное использование .. довольно запутанно .. (поскольку у меня нет ошибки назначения =), Я знаю, что глубокая копия скопирует все внутренние классы, которые используются в объекте, который вы пытаетесь клонировать, я не знаю, как, и на самом деле мне это все равно не нужно. Любой, кто кажется, что Википедия ошибается, или я неправильно истолковал. Но, похоже, сейчас он работает нормально ... Надеюсь, это не просто удача, опять же, работа клонов - это клонирование! Благодарность :) - person SSpoke; 26.06.2011