这是一个关于列表清单的问题。
Dim smallList As New List(Of Integer)
Dim largeList As New List(Of List(Of Integer))
smallList.Add(3)
largeList.Add(smallList)
smallList.Clear()
smallList.Add(4)
largeList.Add(smallList)
在这段代码中,我希望largeList将list(3)添加到自身,然后将list(4)添加到自身。但是不是将数据存储在smallList中,而是似乎存储了一个引用smallList,因此最终包含((4),(4)),这不是我想要的。
为什么会这样做,我该如何解决这个问题?感谢。
答案 0 :(得分:2)
当您有一个引用类型列表时,实际上有一个引用列表。向列表中添加内容并不意味着数据被复制,而只是添加到列表中的引用。
要将单独的对象添加到列表中,您必须为每个项目创建一个新对象,并且列表也是引用类型本身,也适用于列表。
Dim smallList As List(Of Integer) ' just a reference at this time
Dim largeList As New List(Of List(Of Integer))
smallList = New List(Of Integer)() ' The first list
smallList.Add(3)
largeList.Add(smallList)
smallList = New List(Of Integer)() ' Here's another list
smallList.Add(4)
largeList.Add(smallList)