我想重复将字符串列表添加到更大的列表集合中,但是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
然后循环添加另一个内部元素。
答案 0 :(得分:1)
List<T>
是引用类型。调用Clear()
时不起作用的唯一方法是将其克隆添加到外部。您可以使用.ToList()
outer.Add(inner.ToList())
但是我实际上认为,最清晰的方法是,而不是上面的操作,而是向内部分配一个新的List而不是调用Clear。
inner = new List(Of String)