0

这是一个关于列表列表的问题。

    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 将列表 (3) 添加到自身,然后将列表 (4) 添加到自身。但是不是将数据存储在 smallList 中,而是存储一个引用 smallList,因此最终包含 ((4), (4)),这不是我想要的。

为什么会这样做,我该如何解决?谢谢。

4

1 回答 1

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)
于 2012-09-02T20:23:57.603 回答