有没有一种方法可以通过 Val 添加到列表(列表(字符串))?
Is there a method to add to a list (of list(of String)) byVal?
我想将字符串列表重复添加到更大的列表集合中,但 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
然后循环添加另一个内部元素。
List<T>
是引用类型。在调用 Clear()
时不影响它的唯一方法是将它的克隆添加到外部。您可以使用 .ToList()
outer.Add(inner.ToList())
但实际上我认为最清楚的方法是在内部分配一个新列表而不是调用 Clear,而不是上面你不必做的。
inner = new List(Of String)
我想将字符串列表重复添加到更大的列表集合中,但 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
然后循环添加另一个内部元素。
List<T>
是引用类型。在调用 Clear()
时不影响它的唯一方法是将它的克隆添加到外部。您可以使用 .ToList()
outer.Add(inner.ToList())
但实际上我认为最清楚的方法是在内部分配一个新列表而不是调用 Clear,而不是上面你不必做的。
inner = new List(Of String)