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