首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2012-01-02 
新手提问:list(Of T).add)时,数据被覆盖,为什么?Private Function SetEditList(ByVal curveList As CurveL

新手提问:list(Of T).add)时,数据被覆盖,为什么?
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”了,
最后返回的列表内容都是最后一个。

请问为什么呢???谢谢!!!!

[解决办法]
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 

[解决办法]
你每次都添加同一个对象的引用
因此他们都是一个对象

 Dim td As New TraceData 》》》》》》
For Each li In curveList 
td.Name = li.Label.Text 
list.Add(td) 》。》》》》》》

热点排行