Предусматривается ли поведение списка, добавляемого в список, для передачи по ссылке? - PullRequest
1 голос
/ 17 мая 2019

Я заметил что-то при использовании списка списков.Кажется, что если у меня есть 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).Очевидно, мой код не очень динамичен, я жестко программирую первый и второй элемент, но сейчас я просто тестирую, чтобы получить правильную логику и все такое.

Если есть более элегантное решение, явсегда открыт для совета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...