如何在VB中实现Clone??

agamem 2003-12-25 10:07:48
不知道大家有没有试过??

写段代码
dim clsA as new class1
dim colC as new conl1 'conl1 是class1的集合
dim colD as new conl1 'conl1 是class1的集合

colC.add clsA,"1"
colD.add clsA,"1"

问题出现了,clsA / colC.item("1") /colD.item("1") 是同一个引用
当你改变其中的一个时,其他的两个都同时改变!
解决的方法是Clone一个新的!
如:clsB=clsA.clone
colC.add clsB
clsC=clsA.clone
colD.add clsC

请问大家有没有什么好的方法实现Clone??
我现在是定义一个新的,然后将其中的属性一个一个赋值!!笨死了!!
...全文
102 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
agamem 2003-12-26
再顶
回复
agamem 2003-12-26
没人有这方面的需求亚???
回复
agamem 2003-12-25
啊!!老兄我等你!!
回复
agamem 2003-12-25
这样是传的地址吧!!
改一个另外一个也变了
回复
nik_Amis 2003-12-25


Class1

Dim o1 AS New Class1
Dim o2 AS New Class1

o1.Add ....

Set o2=o1

这样不行么?
回复
agamem 2003-12-25
.net 我也会亚,但VB怎么序列化??
那位教教我!!
回复
lovepeacer 2003-12-25
gz
回复
liuyanghe111 2003-12-25
Function CloneObject(ByVal obj As Object) As Object
' Create a memory stream and a formatter.
Dim ms As New System.IO.MemoryStream(1000)
Dim bf As New BinaryFormatter(Nothing, _
New StreamingContext(StreamingContextStates.Clone))
' Serialize the object into the stream.
bf.Serialize(ms, obj)
' Position streem pointer back to first byte.
ms.Seek(0, SeekOrigin.Begin)
' Deserialize into another object.
CloneObject = bf.Deserialize(ms)
' release memory.
ms.Close()
End Function

这段代码是用.net编写的,你试试吧
回复
agamem 2003-12-25
不知道大家有没有试过??

写段代码
dim clsA as new class1
dim colC as new conl1 'conl1是class1的集合
dim colD as& new conl1 'conl1 是class1的集合

colC.add clsA,"1"
colD.add clsA,"1"

问题出现了,clsA / colC.item("1") /colD.item("1") 是同一个引用
当你改变其中的一个时,其他的两个都同时改变!
解决的方法是Clone一个新的!
如:clsB=clsA.clone
colC.add clsB
clsC=clsA.clone
colD.add clsC

请问大家有没有什么好的方法实现Clone??
我现在是定义一个新的,然后将其中的属性一个一个赋值!!笨死了!!
回复
张新林 2003-12-25
可以的,代码嘛不在当前的电脑上。不好意思。。
回复
agamem 2003-12-25
ding
回复
agamem 2003-12-25
自顶
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7451

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告