VBNET 定义了2个结构变量(内有数组),改一个,另一个也变。救我啊。

qq112141874 2020-06-13 09:46:24

Dim 切割计划(100), 切割计划克隆(100) As 原始切割计划
For i = 0 To 99
切割计划(i) = New 原始切割计划(21)
For j = 1 To 20
ReDim 切割计划(i).长度(j)
ReDim 切割计划(i).长度数量(j)
Next
切割计划克隆(i) = New 原始切割计划(21)
For j = 1 To 20
ReDim 切割计划克隆(i).长度(j)
ReDim 切割计划克隆(i).长度数量(j)
Next
Next
切割计划克隆(1).长度(1) = 99

以后就看到:切割计划(1).长度(1) = 99 了 。太折磨人了。救我啊。

...全文
11431 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
it_gz_xi 2020-06-30
  • 打赏
  • 举报
回复
觉得楼主没有贴全代码,原始切割计划里面的长度默认是99?
清晨曦月 2020-06-24
  • 打赏
  • 举报
回复
你的代码串线了?啊哈哈哈。 没看代码,因为一直装自己用英文(han yu pin yin)编程来着。。 如果你确实是VB.NET的话,应该不会搞出个数组越界操作别人的事。。看来就是门牌号的事儿了。。。 就是说,你家住A#101,然后,A#101、qq112141874他家这俩实际上是一个东西吧。。 你要想弄个类的深拷贝,结果整个浅拷贝出来。。。既然需要深拷贝,那要么自己实现一个clone方法,挨个进行copy,要么用序列化方法把当前类序列化之后再反序列化出来一个新的。。。 而且确实,redim属于VB时代的产物,它有自身的好处,但也有问题。对于不定长数组可以使用list等容器。 并且,在构造函数中,就应该初始化好需要的东西,而不是把类的私有成员直接暴露给外部代码,例如,添加的时候可以定义一个简单的add方法。
  • 打赏
  • 举报
回复
忘掉 ReDim。学正规软件工程
zj_zwl 2020-06-17
  • 打赏
  • 举报
回复
‘原始切割计划’,这个类可能问题,里面是不是有共享变量或方法?
良朋 2020-06-17
  • 打赏
  • 举报
回复
ReDim还是真正经的,没啥不正经啊,哈哈。 比如导入型号时根据需要ReDim变量,还是可以节约一点内存的。

16,721

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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