![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Допустим есть объекты:
t2 - по сути, ссылка на t, аналог из C++: т.е., если будет меняться t, то будет меняться и t2. Вопрос: как мне просто один раз скопировать t в t3, чтобы последующие изменения t, не влияли на t3? -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Dogo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 20.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 9 |
Можно решить проблему 2мя способами:
1) Имплиментировать интерфейс ICloneable. 2) Создать конструктор копирования. --------------------
|
|||
|
||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
1 - не понял.
2 - не пойдёт, мне надоскопировать объект не обязательно при создании. -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
Dogo |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 20.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 9 |
Объясняю -
--------------------
|
|||
|
||||
Walker |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 5 Всего: 16 |
Что, по сути, тождественно. Ведь при копировании объекта Вы выделяете в динамической памяти место под хранение его клонированного экземпляра. Т.е., создаёте новый экзмпляр, во всём подобный исходному.
Если пишете библиотеку, то лучше реализовывать и то и другое. Обычно в методе Clone(), просто вызывают конструктор копирования, метод возвращает ссылку на новый объект-клон. Интерфейс - некоторая альтернатива множественному наследованию. Вы сообщаете другим классам о том, что Ваш класс поддерживает определённую модель поведения. -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
||||
|
|||||
Rickert |
|
|||
![]() Ситхи не пройдут! ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3356 Регистрация: 11.7.2006 Где: Лакрима Репутация: нет Всего: 52 |
Solved
![]() -------------------- Ни что не внушает сна крепче, чем день приисполненный трудов! |
|||
|
||||
jorikdima |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
Почему IClonable не поддерживаетс в .NET в версии выше 2? На что менять?
http://msdn.microsoft.com/en-us/library/sy...ble(VS.80).aspx Добавлено через 6 минут и 25 секунд Это специально сделано, что конструктор копирования (принимающий в качестве аргумента объект такого же типа) позволяет использовать поля копируемого объета даже если они идут с модификатором private? |
|||
|
||||
elbjarn |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 13.4.2008 Где: Дубна Репутация: 1 Всего: 3 |
это вы откуда взяли? ![]() поскольку операции идут в функции, принадлежащей тому же классу, ей доступны все поля этого класса. |
|||
|
||||
jorikdima |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 18.1.2008 Где: Там, где Зенит Репутация: нет Всего: нет |
![]() ![]() Блин четко видел в MSDN и даже ссылку приве, оторая днем работала, сейчас нет ![]() ![]() |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |