新手提问:list(Of T).add)时,数据被覆盖,为什么?

a09002412 2008-06-25 11:00:56
Private Function SetEditList(ByVal curveList As CurveList) As List(Of TraceData)
Dim list As New List(Of TraceData)
Dim li As LineItem
Dim td As New TraceData
For Each li In curveList
td.Name = li.Label.Text
list.Add(td)
Next
Return list
End Function

如上,TraceData是我自己写的包含几个属性类体,但是发现在每次添加的时候,上次被添加的内容都变成本次添加的内容了。
比如:第一次是name是“变量1”,第二次添加的name是“变量2”,结果我设断点一看,第一次的也变成“变量1”了,
最后返回的列表内容都是最后一个。

请问为什么呢???谢谢!!!!
...全文
220 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gyc 2008-06-26
  • 打赏
  • 举报
回复
你每次都添加同一个对象的引用
因此他们都是一个对象

Dim td As New TraceData 》》》》》》
For Each li In curveList
td.Name = li.Label.Text
list.Add(td) 》。》》》》》》
神之泪花 2008-06-25
  • 打赏
  • 举报
回复
路过,关注....
wy24789 2008-06-25
  • 打赏
  • 举报
回复
不会,帮顶
a09002412 2008-06-25
  • 打赏
  • 举报
回复
了解了。。CSDN上热心人真少。。
xfyxq 2008-06-25
  • 打赏
  • 举报
回复
Dim td As New TraceData
For Each li In curveList
td.Name = li.Label.Text
list.Add(td)
Next

这是因为td对象一直没有发生变化,你list.Add(td) 一直都是Add的同一个对象,你可以:
For Each li In curveList
Dim td As New TraceData
td.Name = li.Label.Text
list.Add(td)
Next

16,717

社区成员

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

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