如何创建一个类的副本???望高手不吝赐教

TellMeWhoCanIdo 2004-03-23 01:09:30
比我已经有一个类实例了,赋予了一些基本参数以后,我要复制10份,然后在根据不同情况对这10个实例进行操作。
class 1:
public i as integer;

button_click:
dim a as class1
dim b(0 to 9) as class1
dim j as integer

set a = new class1
a.i = 10

for j = 0 to 9
'在这里给b的每个元素付一个新的a
next j
a.i = 100 '这里不会影响到b里面的内容
...全文
48 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
TellMeWhoCanIdo 2004-03-24
  • 打赏
  • 举报
回复
to victorycyz(中海)
要是有好多属性和参数要设,这个方法是在太累人了#_#
TellMeWhoCanIdo 2004-03-24
  • 打赏
  • 举报
回复
to pigpag(噼里啪啦 - 努力开发狂看书)
示例可以,但是我自定义的类不行,好像少了什么设置。同样的调用方法出了这样的错误:
Illegal parameter. Can't write object because is does not support persistence.

PropertyBag好像用在做控件属性用的,不太清楚,还请帮忙看看
pigpag 2004-03-23
  • 打赏
  • 举报
回复
不行,对象的复制都是引用复制,不是值形式的。

有两种方法复制对象(不过都是复制属性,从而达到复制效果):接口的Clone方法;使用PropertyBag复制属性包。
参考这里:http://www.devx.com/vb2themax/Tip/18378

还有一种方法:直接用CopyMemory,但是无法获取对象在内存中的占位大小(VB里面没有与sizeof等价的函数)
rainstormmaster 2004-03-23
  • 打赏
  • 举报
回复
你先用CopyMemory试试,现在我有事,一会再细说
victorycyz 2004-03-23
  • 打赏
  • 举报
回复

你真正需要的是用VB模拟一个构造函数。参考此贴中我的回复:

http://expert.csdn.net/Expert/topic/2865/2865225.xml?temp=.3059351
rainstormmaster 2004-03-23
  • 打赏
  • 举报
回复
用Set语句是不行的,Set语句并不是单纯的变量赋值语句,它不像赋值语句一样产生对象的一个拷贝,而是把一个对象变量设定为对象指针,指向不同对象变量
leolan 2004-03-23
  • 打赏
  • 举报
回复
For j = 0 To 9
Set b(j) = New Class1
b(j).i = a.i
Next
leolan 2004-03-23
  • 打赏
  • 举报
回复
這樣的話B也會隨A的改變而改變
华芸智森 2004-03-23
  • 打赏
  • 举报
回复
for j = 0 to 9
SET B(J)=A
'在这里给b的每个元素付一个新的a
next j

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧