Как я могу изменить строки с помощью “Для Каждого” цикла?

       '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, andstring3'. Это кажется избыточным для копирования этих строк в массив.

5
задан BoltClock 21 July 2010 в 14:16
поделиться