2015-02-16 4 views
1

Мне нужно создать массив строковых массивов. Пример:Как создать массив строковых массивов

> Array(0) = {"1", "a", "e"} 

> Array(1) = {"word", "at", "war"} 

> ... 

я сделал:

Dim array()() As String 

For i = 0 to 10 
    array(i) = New String() {"dfdd", "dda", "aa", "bnb", "3", "ghj", "ht"} 
Next i 

Но он терпит неудачу, за исключением:

объекта не задана ссылка на экземпляр объекта.

+0

дубликата [? Что такое NullReferenceException и как это исправить] (http://stackoverflow.com/questions/4660142/what-is- a-nullreferenceexception-and-how-do-i-fix-it) –

+0

Вы инициализируете дочерние элементы с помощью 'New String() {...}' внутри цикла, но «родительский» массив не инициализируется. –

+0

Вот что я пытаюсь узнать: S, Потому что если я пытаюсь: Dim array()() As String = New String(), он дает мне ошибку. Я не знаю, как декларировать такие типы массивов без создания и структуры или класса – Carol

ответ

4

Это потому, что первое измерение вашего массива не было инициализировано.

Dim array(10)() As String 

    For i = 0 To 10 
     array(i) = New String() {"dfdd", "dda", "aa", "bnb", "3", "ghj", "ht"} 
    Next I 

Я бы предложил вам посмотреть список и, возможно, создать класс, если каждая строка определит другое свойство.

3

Я думаю, что List(Of String()) бы удовлетворить ваши потребности лучше здесь:

Dim arrays as New List(Of String()) 

For i = 0 to 10 
    arrays.Add(New String() {"dfdd", "dda", "aa", "bnb", "3", "ghj", "ht"}) 
Next i 

Перечень будет автоматически расширяться, чтобы держать столько массивов, сколько вам нужно. Затем, если вы все еще хотите, массив массивов, вы всегда можете сделать:

arrays.ToArray() 

Вот fiddle. Кроме того, см. this answer на аналогичный вопрос о байтовых массивах.

0

Вы всегда можете сделать это следующим образом:

Dim array = Enumerable _ 
    .Range(0, 10) _ 
    .Select(Function (n) New String() {"dfdd", "dda", "aa", "bnb", "3", "ghj", "ht"}) _ 
    .ToArray() 
Смежные вопросы