PDA

Показать полную графическую версию : [решено] Помогите с классами в C#


SmallGod
26-04-2010, 22:20
Допустим есть у меня сложный класс FInfo.

FInfo info = new FInfo();
FInfo x;

x = info; // так получается что в х ссылка таже что в info

А как создать "x" со значениями к-ые уже есть в "info"?
Т.е. что бы при работе с "x" не менялось значение в "info".
Или скажем "x" присвоить все значения "info".

Наверное придётся прописывать копирование почленно...

Delirium
27-04-2010, 00:53
Не совсем понятна суть проводимой операции. Логичный вопрос: А зачем?

SmallGod
27-04-2010, 02:26
Что значит для чего? Для копирования. ;)
Пока лучший способ к-ый нашёл это через сериализацию (для сложного класса).

Здесь есть пример, но он более трудоёмкий, чем хотелось бы:
http://msdn.microsoft.com/ru-ru/library/ms173116.aspx

EvgeniyQQQ
27-04-2010, 09:54
SmallGod, можно использовать клонирование, реализовав в вашем классе интерфейс ICloneable путём добавления к нему метода Clone().
Вот ссылка на эту тему:
Клонирование и интерфейс ICloneable. (http://www.intuit.ru/department/pl/csharp/19/5.html)

Awejk
27-04-2010, 10:09
Не знаю как в С# но в С++ можно это сделать двумя известными и хорошо практикуемыми способами
1. через конструктор копирования
2. переопределить оператор = который будет возвращать не ссылку на объект а новый созданный объект со всеми значениями старого объекта.

Уверен что такие подходы можно будет реализовать и в С#. Ну и плюс ещё те способы которые изложили выше. Так что выбирайте :)

SmallGod
27-04-2010, 12:07
EvgeniyQQQ Да, я про это знаю, но этот метод мне не подойдёт.
Решил всё таки, что буду делать как на msdn (так надёжнее и более точно прописать можно)

Всем спасибо. Тема закрыта.




© OSzone.net 2001-2012