在使用列表列表时,我注意到了一些东西。看来,如果我有一个List(Of String)
和一个List(Of List(Of String))
,当我将List(Of String)
添加到List(Of List(Of String))
时,字符串列表将通过引用传递。
例如下面的代码:
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
Dim listRow As New List(Of String)
Dim listTable As New List(Of List(Of String))
listRow.Add("Apple")
listRow.Add("Red")
listTable.Add(listRow)
MsgBox(listTable(0)(0))
MsgBox(listTable(0)(1))
listRow(0) = "Banana"
listRow(1) = "Yellow"
MsgBox(listTable(0)(0))
MsgBox(listTable(0)(1))
End Sub
第一对消息将显示“ Apple”和“ Red”。然后,在更新listRow之后,它将显示“香蕉”和“黄色”。对我来说,这意味着该列表是通过引用而不是按值添加的。我正在寻找对此的确认,也许有一个更好的解释?
这是我一直在处理的方式:
Sub AddListItemToMainList(myListRow As List(Of String), myListTable As List(Of List(Of String)))
Dim newList As New List(Of String)
newList.Add(myListRow(0))
newList.Add(myListRow(1))
myListTable.Add(newList)
End Sub
然后只需将listTable.Add(listRow)
替换为AddListItemToMainList(listRow, listTable)
。显然,我的代码不是很动态,我正在对第一个和第二个元素进行硬编码,但是我现在只是在测试,以了解逻辑和不正确的地方。
如果有更优雅的解决方案,我会随时征求意见。