是否有一种方法可以通过Val添加到列表(字符串的列表)中?

时间:2018-09-24 11:17:10

标签: vb.net pass-by-value

我想重复将字符串列表添加到更大的列表集合中,但是list.add函数似乎正在添加项byref。如何更改下面的示例代码以传递元素byval,以便在我重新使用变量时不会清除它们:

    Dim inner As New List(Of String)
    Dim outer As New List(Of List(Of String))
    Dim eleCount As Integer = 0
lbltop:
    inner.Add("a")
    inner.Add("b")
    inner.Add("c")

    outer.Add(inner)
    Debug.Write(outer(0)(0).ToString())
    inner.Clear()

    Debug.Write(outer(0)(0).ToString())

    eleCount += 1
    If eleCount < 2 Then
        GoTo lbltop
    End If

这样写a,然后下一个debug.write语句超出范围。

我希望它写aa然后循环添加另一个内部元素。

1 个答案:

答案 0 :(得分:1)

List<T>是引用类型。调用Clear()时不起作用的唯一方法是将其克隆添加到外部。您可以使用.ToList()

outer.Add(inner.ToList())

但是我实际上认为,最清晰的方法是,而不是上面的操作,而是向内部分配一个新的List而不是调用Clear。

inner = new List(Of String)