VB:List(Of List(Of String))在更改内部列表时不断更改外部列表的内容?

时间:2013-04-13 00:53:12

标签: vb.net list clear

我正在用VB编写一个程序,我需要列出一个列表(我已经想出了如何做到这一点)。问题是,外部列表将需要不同数量的元素,具体取决于程序中其他位置的其他变量。

我已经使用了这段代码:

    Dim rep As Long = 1023
    Dim items As List(Of String)
    items.Add("First Entry")
    items.Add("Second Entry")
    items.Add("Third Entry")
    items.Add("Fourth Entry")

    '(sake of argument, these are the variables
    'that will be changing vastly earlier
    'in the program, I put them in this way to simplify
    'this part of my code and still have it work)

    Dim myList As New List(Of List(Of String))
    Dim tempList As New List(Of String)

    For index = 1 To Len(rep.ToString)
        tempList.Add(items(CInt(Mid(rep.ToString, index, 1))))
    Next

    myList.Add(tempList)
    tempList.Clear()

我的问题在于最后一部分;每次我将tempList添加到myList时都没问题,但是当我清除tempList时,它也会清除myList中tempList的版本。

myList的计数为1,但是当我清除tempList时,其中的列表的计数为0。我必须清除tempList,因为我一遍又一遍地循环这部分代码。

有解决方法吗?我是一个可怕的菜鸟吗?

1 个答案:

答案 0 :(得分:2)

您每次都使用相同的tempList,而不是制作新的。{/ p>

您可能需要这样做:

myList.Add(tempList)
tempList = new List(Of String) ' Create a new List(Of T), don't reuse...