读书人

新手提问:list(Of T).add)时数据被

发布时间: 2012-01-02 22:40:04 作者: rapoo

新手提问: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) 》。》》》》》》

读书人网 >VB Dotnet

热点推荐