Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как создать копию объекта? / 7 сообщений из 7, страница 1 из 1
08.12.2003, 17:16
    #32346821
Akni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
Добрый день всем!

Подскажите, пожалуйста, как в VB можно создать копию объекта? Не указатель на существ. Объект, а именно копию.

При конструкии вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim Obj1 = new Class1
Obj1.Field1=Value1
…
obj1.fieldN = ValueN

Dim Obj2 = Class1
Set Obj2 = New Class1
Set Obj2 = Obj1

Я получаю в Obj2 ссылу на Obj1 и при обращении
Код: plaintext
Obj2.Field1 = NewValue1

Меняется, естественно, Obj1.Field1.

Каким образом можно этого избежать? Если описание нужного мне механизма есть в MSDN, то ткните, пожалуйста, носом.

Заранее спасибо.
...
Рейтинг: 0 / 0
10.12.2003, 15:41
    #32349433
dao
dao
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
смотри New
...
Рейтинг: 0 / 0
10.12.2003, 16:49
    #32349564
Akni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
ну а конкретнее?
по New я создаю новый объект и дальше, как описано в моем первом посте. При этом в заново созданном объекте имею не независимую копию исходного, а ссылку на исходный объект. Т.е. при изменении свойств нового объекта меняются и свойства исходного тоже.

Создавать новый объект через New и потом вручную копировать все свойства - это как бы и так понятно, но хотелось бы чего-то поуниверсальнее.

Конструкции типа
Dim Obj1 = new Class1
Obj1.Field1=Value1


Dim Obj2 = Obj1
не поддерживаются (что, в общем-то, есть абсолютно логично и правильно).

или есть еще какой-то вариант с New ?
...
Рейтинг: 0 / 0
11.12.2003, 11:23
    #32350336
DIKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
Если интересует Recordset то у него метод есть Clone. Другие объекты помоему не получиться скопировать
...
Рейтинг: 0 / 0
12.12.2003, 10:24
    #32351295
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
задача копирования объекта - это задача самого объекта, ибо никто другой кроме самого объекта не может знать о нем всего.
...
Рейтинг: 0 / 0
12.12.2003, 12:05
    #32351361
Akni
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
to Hibernate:
скорее всего, вы правы, просто надеялась найти в VB аналог метода Assign из Delphi, который как раз и занимается копированием всех общих свойств одного объекта в другой.
...
Рейтинг: 0 / 0
12.12.2003, 19:22
    #32351631
Hibernate
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать копию объекта?
Просто копирования Public переменных может оказаться недостаточно, чтобы получить точную копию объекта: придется что-то делать с переменными-ссылками на другие объекты, которые могут быть совершенно неизвестной структуры и это может быть на неограниченную глубину вложенности...
Хотя, опять-же как выставить значения закрытых переменных вновь созданной копии?

По-моему утопия.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как создать копию объекта? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]