Для каждого byref x in y - вместо byval - PullRequest
0 голосов
/ 19 сентября 2018

Я бы хотел обновить каждый элемент списка после запуска функции для него.В данный момент я использую цикл for each, но изменения не сохраняются ... есть ли версия, в которой "каждый" передается byref, чтобы изменения сохранялись.

дляНапример, в настоящее время:

Private Sub Button2_Click(sender As Object, e As RibbonControlEventArgs) Handles Button2.Click
    Dim letters() As String = {"a", "b", "c"}

    Debug.Write(letters(1))
    For Each letter As String In letters
        letter = "d"
    Next
    Debug.Write(letters(1))
End Sub

печатает bb, но я бы хотел напечатать bd

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Я изменил свой тестовый сценарий, чтобы он не использовал список неизменяемых строк после комментария от @the_lotus, и приведенные ниже данные теперь ведут себя как ожидалось:

Private Sub Button2_Click(sender As Object, e As RibbonControlEventArgs) Handles Button2.Click
    Dim lines As New List(Of clsDepLine)

    lines.Add(New clsDepLine)
    lines.Add(New clsDepLine)

    lines(0).Account_Manager = "A"

    Debug.Write(lines(0).Account_Manager)

    For Each line As clsDepLine In lines
        line.Account_Manager = "b"
    Next
    Debug.Write(lines(0).Account_Manager)
End Sub

выводит Ab

дляссылка, clsDepLine определена:

Public Class clsDepLine

   Public Property Account_Manager As String
   [...]more properties[...]
End Class
0 голосов
/ 19 сентября 2018

Если бы в вашем примере использовался список ссылочных типов, он бы работал как написано.Строки неизменны.Единственный способ изменить его - создать новый и указать на него свою ссылку.

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