Я пытаюсь передать массив Sub, чтобы Sub мог изменить одно из значений массива.
Что-то вроде этого
Dim a As String = "STARTVALUE"
PopulateDataSet("Management", {a})
Public Sub PopulateDataSet(ByRef SomeRandomOtherVariable As String, ByRef ToBePopulatedVariables() As String)
ToBePopulatedVariables(0) = "TheNewValue"
End Sub
Когда я запускаю код, я могу пройти через Sub и посмотреть, где ToBePopulatedVariables(0) — переменная A — имеет значение «STARTVALUE», а затем это значение изменяется на «TheNewValue».
Но когда управление возвращается вызывающему коду, значение a возвращается к «STARTVALUE».
Я пробовал все, что мог придумать. Любые идеи?
И @karl-anderson, и Nadeem_MK предполагают одно и то же.
Но
Dim a As String()
a(0) = "FirstVariable"
PopulateDataSet("Management", {a})
Возвращает «Ссылка на объект не указывает на экземпляр объекта».
При присвоении значения a(0)
Однако
Dim a As String() = {"FirstVariable"}
Бегает.
Но я все еще застрял с новым значением, которое не возвращается вызывающему коду. Я пытался сделать это с помощью ByVal и ByRef, но для массивов я не думаю, что это имеет значение. –
a
. Вместо этого он создает новую строку и заставляет первый элемент массива указывать на эту строку. - person Chris Dunaway   schedule 25.11.2013