|
6 / 6 / 0
Регистрация: 10.02.2009
Сообщений: 140
|
|
копирование объектов12.02.2009, 13:30. Показов 23849. Ответов 14
Метки нет (Все метки)
Подскажите,пожалуйста, как мне сделать копию объекта.
Имеем obj1, хочу сделать obj2==obj1 при присвоении obj2=obj1 присваивается ссылка на первый объект, и при,например, изменении obj2.field1 значение поля меняется и в obj1, а нужна именно копия, с которой можно дальше работать, не беспокоя первый объект. Всем спасибо!
0
|
|
| 12.02.2009, 13:30 | |
|
Ответы с готовыми решениями:
14
Копирование объектов по значению Глубокое копирование объектов с интерфейсами
|
|
7 / 7 / 3
Регистрация: 05.02.2009
Сообщений: 30
|
||||||
| 12.02.2009, 14:02 | ||||||
sameAs() сравнивает значение alpha i beta....
0
|
||||||
|
6 / 6 / 0
Регистрация: 10.02.2009
Сообщений: 140
|
|
| 12.02.2009, 14:19 [ТС] | |
|
спасибо за ответ, но речь идёт о копировании объекта целиком, особенно важно это в том случае, когда количество свойств велико, в частности объекты, унаследованные от контролов форм
0
|
|
|
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
|
|
| 12.02.2009, 14:40 | |
|
а через оператор new пробовал?
Добавлено через 13 минут 26 секунд в таком случае кажеться лучше использовать структуры
0
|
|
|
6 / 6 / 0
Регистрация: 10.02.2009
Сообщений: 140
|
||
| 12.02.2009, 14:47 [ТС] | ||
|
как через new?
Myclass obj2=new Myclass(obj1)? не прокатывает,например, со стеком,стек "переворачивается",приходится дважды "переливать": Stack<int> st1=new Stack<int>(st2); st1=new Stack<int>(st1); тогда работает, но двойная переливка при длине стека за 100 и количестве операций за 100 тысяч круто тормозит прогу, вот и спросил, как просто сделать st1=st2 так чтоб st1.Pop() итд не трогало st2 ![]() Добавлено через 6 минут 3 секунды
0
|
||
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
| 13.02.2009, 02:52 | |
|
Stack.Clone() пробовали?
Можно попробовать Stack.CopyTo().
0
|
|
|
6 / 6 / 0
Регистрация: 10.02.2009
Сообщений: 140
|
|
| 13.02.2009, 10:36 [ТС] | |
|
у дженерика нет Clone(), а CopyTo даёт массив, передавать массив в качестве параметра конструктору ещё дольше чем писать
st1=Stack<int>(st2); st1=Stack<int>(st1); интересует вопрос создания копии объекта любой структуры, в тч объектов Windows.Forms
0
|
|
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
| 13.02.2009, 15:08 | |
|
Stack<string> numbers = new Stack<string>();
Stack<string> stack2 = new Stack<string>(numbers.ToArray()); Также переворачивает стек, однако используется копии элементов. Для поддержки клонирования наследуйте свои объекты от ICloneable. Со своей реализацией Clone().
0
|
|
|
Администратор
87888 / 53209 / 249
Регистрация: 10.04.2006
Сообщений: 13,767
|
||||||||||||||||||||||
| 13.02.2009, 15:15 | ||||||||||||||||||||||
0
|
||||||||||||||||||||||
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
| 13.02.2009, 17:53 | |
|
mik-a-el, такой подход подойдет не всегда. Не усмотрел где связывается последний кусок кода к пред идущим. Такое копирование свойств будет работать для встроенных типов (последний кусок кода как раз ведет проверку по встроенным типам, с этим может справиться сам .NET). Если в свойстве лежит ссылка на объект, то в копию объекта в это свойство попадет эта же ссылка. Не удел остаются приватные поля и свойства. Поэтому копирование объекта разумнее переложить на сам объект.
0
|
|
|
Администратор
87888 / 53209 / 249
Регистрация: 10.04.2006
Сообщений: 13,767
|
|
| 13.02.2009, 18:05 | |
|
0
|
|
|
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
|
||
| 14.02.2009, 16:49 | ||
0
|
||
|
6 / 6 / 0
Регистрация: 10.02.2009
Сообщений: 140
|
|
| 14.02.2009, 20:10 [ТС] | |
|
спасибо. я так понимаю, в С# не рекомендуется обращаться напрямую к памяти,но всеже спрошу: есть ли возможность скопировать всю память выделенную под объект и его поля, или же физически поля объекта могут располагаться в различных участках памяти?
0
|
|
|
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
|
|
| 16.02.2009, 03:29 | |
|
Объект не храниться в памяти в течении всего времени. Сборщик мусора может переместить его в другой участок. При чем разрешение у программиста никто не спрашивает.
Добавлено через 2 минуты 7 секунд _NuClear, далеко на структурах не уедете..
0
|
|
|
Мохаммед Али
131 / 70 / 5
Регистрация: 14.08.2009
Сообщений: 916
|
|||||||||||||||||||||
| 02.08.2011, 09:19 | |||||||||||||||||||||
|
ну так и как же создать копию объекта со сложной иерархией ? нету простого рекурсивного метода какого нить?
Добавлено через 15 часов 49 минут кароче в мсдн написано делать все ручками но с использованием поверхностного копирования, теость для каждого класса прописываем метод
плюс - так как это интерфейс то в каждом классе обязательно присутствие метода
0
|
|||||||||||||||||||||
| 02.08.2011, 09:19 | |
|
Помогаю со студенческими работами здесь
15
Копирование определенного текста из файла, копирование и вставка в статичную переменную Массив объектов базового класса, позволяющий работать с набором объектов — чтение, вывод
При инициализации массива объектов в одном методе, этот массив объектов не видно в других методах
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|