2014-10-13 3 views
0

Я использую список массивов для хранения строк. Однако, когда я запускаю программу, она выдает ошибку: преобразование из типа «String()» в тип «String» недействительно. Я уверен, что мне не хватает чего-то простого. Я думал, что ArrayList был списком объектов и что он может быть все, что я был послан в массив., например, строки в, струнные вне. Вот код, который я работаю с.Тип литья Строки

Dim tempString As New ArrayList() 

    For Each s As String In tempString 
      Dim sAry As String() = bufString.Split(New Char() {ChrW(2)}) 
      For i As Int16 = 1 To sAry.Length 
       xlCells(CurrentRow, i).Value = sAry(i - 1).ToString() 
      Next 
     Next 

Я также пришел к пониманию того, что ArrayList обесценился, я должен использовать что-то еще?

+0

Где 'bufString' объявили? – Stryner

+0

вы arent, используя строки в tempString где угодно ... 'Для каждого s в TempString', но s не используется в цикле. Включите Option Strict. «Список (String)» будет хорошей заменой для ArrayList – Plutonix

ответ

0

Прежде чем прыгать в вашем случае быстро пожалуйста, дайте взглянуть на другие большие ответы

What's Wrong with an ArrayList?

.NET: ArrayList vs List

и вы можете Google, чтобы узнать больше в этом отношении ...

Для известной коллекции типизированного это не хорошо использовать ArrayLists. В вашем случае я хотел бы предложить общую коллекцию List (Список является гораздо более эффективным с точки зрения использования памяти) Вы можете увидеть мои ниже тестовый пример для вас:

Sub Main() 
    Dim tempList As New List(Of String) 'Consider List Rather ArrayList as you knw your requirement for Strings collection 
    tempList.Add("string1string2string3string4") 'for testing purpose I've joined "string1, string2, string3 & string4" with ChrW(2) unicode character 

    For Each s As String In tempList 
     Dim sAry As String() = s.Split(New Char() {ChrW(2)}) 
     For i As Int16 = 1 To sAry.Length 
      'xlCells(CurrentRow, i).Value = sAry(i - 1).ToString() 
      Console.WriteLine(sAry(i - 1).ToString()) 
     Next 
    Next 
    Console.ReadLine() 
End Sub