读书人

vb.net中嵌套结构体传值复制的有关问题

发布时间: 2012-02-09 18:22:27 作者: rapoo

vb.net中嵌套结构体传值复制的问题
代码如下:
模块声明:

VB.NET code
Public Structure aaa2Dim s As StringEnd StructurePublic Structure aaa1Dim str As StringDim rr() As aaa2End Structure


窗体中的代码:
VB.NET code
Dim k As aaa1Dim kb As aaa1ReDim k.rr(1)k.str = "123"k.rr(1).s = "我123"MsgBox(k.rr(1).s)kb = kkb.str = "1234"kb.rr(1).s = "我1234"MsgBox(k.rr(1).s)MsgBox(k.str)


过程是将k复制到kb,然后从kb中修改数据
结果发现kb.str修改后,k.str没有发生变化,
但是kb.rr(1).s修改后,k.rr(1).s的值却跟着一起修改了。
也就是嵌套结构aaa2在复制的过程中仅仅只是传了数据地址给kb而已,并没有将所有数据一起复制给kb。请问如何才能在复制时完全新建一个kb。

[解决办法]
实现aaa1.Clone()方法,在Clone方法里实现深拷贝,然后kb = k.Clone()

读书人网 >VB Dotnet

热点推荐