Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/127: Рейтинг темы: голосов - 127, средняя оценка - 4.99
16 / 16 / 1
Регистрация: 23.08.2009
Сообщений: 55
1

Полное копирование объекта

24.08.2010, 19:01. Показов 26645. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно ли клонировать экземпляр класса, который не реализует интерфейс System.IClonable (не содержит метод Clone() )? Или нужно переписывать все нестатичиские поля вручную? Думал обойтись MemberwiseClone, но из документации понял что для ссылочных полей он копирует тоже ссылки а не значение самого поля.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2010, 19:01
Ответы с готовыми решениями:

Копирование объекта
Есть два объекта object1 и object2. Что будет при выполнении операции object1 = object2? Все...

Копирование объекта List<>
При изменении объекта D почему-то изменяется и объект _C. Подскажите, почему это происходит и как...

Clipboard копирование сериализуемого объекта
bool s = IsSerializable(this); DataFormats.Format format =...

Копирование определенного текста из файла, копирование и вставка в статичную переменную
Доброго вечера. Делаю программу которая бы выводила погоду на сегодня через данные сайта. Завис на...

5
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
24.08.2010, 19:56 2
В классе обьект кторого ты хочешь комипровать -клонироват создай deep copy constructor
0
16 / 16 / 1
Регистрация: 23.08.2009
Сообщений: 55
24.08.2010, 20:18  [ТС] 3
У меня есть вот такое определение:
C#
1
Dictionary<string, Dictionary<string, LessonInfo>> week = new Dictionary<string, Dictionary<string, LessonInfo>>();
на каком-то этапе мне нужно скопировать один из элементов week и производить над ним операции, так что бы это не затрагивало сам элемент в week. То есть получается что мне надо клонировать объект Dictionary<string, LessonInfo>. как этого сделать я пока не знаю.
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
24.08.2010, 20:31 4
что такое deep copy constructor знаешь?
если нет то:
метод который копирует куждую переменную .таким образом изменяя копию оригинал не меняется.пример есть класс Car:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class Car
{
 private string Model;
 private string Color;
 private int Engine;
 public Car(string model,string color,int engine)//Constructor
 {
    this.Model=model;
    this.Color=color;
    this.Engine=engine;
 }
 public Car(Car other)//Deep copy constructor
//Где other копируемый обьект this копия/клон
// таким образом этот конструктор создает копию обьекта присваивая копии новое мечто в памяти
//т.е. создается новый обьект с параметрами копирываемого обьекта
 {
     this.Model=other.Model;
     this.Color= other.Color;
     this.Engine=other.Engine;
 }
}
//----Клонирование происходит так
Car c=new Car("bmw","black",320);
Car clone=new Car(c);// c клонируется в clone;
2
16 / 16 / 1
Регистрация: 23.08.2009
Сообщений: 55
24.08.2010, 20:57  [ТС] 5
спасибо, будем пробовать

но что то не думаю что мне это подойдет. на сколько я понял deep copy constructor подразамевает что нужно дописать конструктор классе, в моем случае сделать этого нельзя (я же клонирую Dictionary). Разве что написать класс и унаследовать от Dictionary<string, ...>. Проще уже тогда поля вручную переписать
0
Mobile Developer
238 / 234 / 18
Регистрация: 10.05.2009
Сообщений: 917
24.08.2010, 21:05 6
ну да , тогда нужно наследовать, тогда перепиши поля ручками))или реализуй интерфейс IClonable

Добавлено через 45 секунд
Только чем тебе наследование не угодило?)
0
24.08.2010, 21:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.08.2010, 21:05
Помогаю со студенческими работами здесь

Полное (побитовое) копирование объекта одной строчкой кода. не ссылки
Добрый день, подскажите пожалуйста, как быстро и безболезненно можно скопировать значения одного...

полное копирование ячейки
Можно ли скопировать ячейку полностью (включая содержимое и формат), минуя поэлементное копирование...

Полное копирование таблицы
Добрый вечер. Прошу вашей помощи. Необходимо скопировать таблицу полностью, а именно: Все данные,...

Полное копирование TabPage
Добрый день, Товарищи! Механизм работы программы заключается в TabControl1 То есть всю работу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru