'Why doesn't this work? Dim myStrings As String() = New String() {string1, string2, string3,} For Each s As String In myStrings If String.IsNullOrEmpty(s) Then s = "" End If s = "-" & s.Trim() & "-" Next
Если string1
содержит "foo"
, мое намерение состоит в том, что string1
содержит "-foo-"
после цикла выполняется. Как я могу сделать эту работу?Как изменить строки, используя цикл «Для каждого»?
Я предполагаю, что этот код делает копии моих строк и изменяет их. Как я могу изменить свои строки в цикле?
Обновление Я изменил код, чтобы использовать индексы массива:
' It still doesn't work. Dim myStrings As String() = New String() {string1, string2, string3} For i As Integer = 0 To myStrings.Count() - 1 If String.IsNullOrEmpty(myStringss(i)) Then myStringss(i) = "" End If myStrings(i) = "-" & myStrings(i) & "-" Next
Результатом этого кода, в частности, со ссылкой на массив и индекс для каждого элемента, изменяет массив, но мои строки по-прежнему имеют одинаковые старые значения. По-видимому, инициализация массива вроде этого просто копирует мои значения в новый массив. Как изменить исходные значения в цикле?
Акцент: массив предназначен только для циклических целей. Мне нужно изменить string1
, string2
и string3
аналогично, но как только этот цикл проходит, для массива больше не нужно. О, и мой реальный код имеет более 3 строк.
Позвольте мне сказать, что если бы я использовал язык с большим количеством указателей и ссылок, я бы просто имел массив указателей, которые указывают на string1
, string2, and
string3`. Кажется излишним скопировать эти строки в массив.
Если это не будет "Для каждого S As String В myStrings" – Gage
@Gage: Да, это должно быть. Напишите это как ответ, поэтому его можно отметить как правильно =) –
@ Томас, это не ответ, это всего лишь небольшое исправление. – corsiKa