Массив массивов - PullRequest
       2

Массив массивов

6 голосов
/ 19 июня 2011

Как вы создаете массив массивов в C #? Я читал о создании зубчатых массивов, но я не уверен, что это лучший способ сделать это. Я хотел добиться чего-то вроде этого:

string[] myArray = {string[] myArray2, string[] myArray3}

Тогда я могу получить к нему доступ, как myArray.myArray2[0];

Я знаю, что код не будет работать, но только как пример, чтобы объяснить, что я имею в виду.

Спасибо.

Ответы [ 5 ]

11 голосов
/ 19 июня 2011

Простой пример массива массивов или многомерного массива выглядит следующим образом:

int[] a1 = { 1, 2, 3 };
int[] a2 = { 4, 5, 6 };
int[] a3 = { 7, 8, 9, 10, 11 };
int[] a4 = { 50, 58, 90, 91 };

int[][] arr = {a1, a2, a3, a4};

Для проверки массива:

for (int i = 0; i < arr.Length; i++)
{
    for (int j = 0; j < arr[i].Length; j++)
    {
        Console.WriteLine("\t" +  arr[i][j].ToString());
    }
}
6 голосов
/ 19 июня 2011

вам нужен неровный массив , это лучшее решение здесь

int[][] j = new int[][] 

или:

string[][] jaggedArray = new string[3][];

jaggedArray[0] = new string[5];
jaggedArray[1] = new string[4];
jaggedArray[2] = new string[2]

затем:

jaggedArray[0][3] = "An Apple"
jaggedArray[2][1] = "A Banana"

и т.д ...

примечание:

Прежде чем вы сможете использовать jaggedArray, его элементы должны быть инициализированы.

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

3 голосов
/ 19 июня 2011

Вы можете использовать список списка.Список - это просто динамический массив:

        var list = new List<List<int>>();
        list.Add(new List<int>());
        list[0].Add(1);
        Console.WriteLine(list[0][0]);
0 голосов
/ 19 июня 2011

Я не могу понять вашу настоящую цель.Но в качестве опции вы можете использовать тип dynamic для создания динамического словаря, как описано здесь (см. примеры раздел).
Но более вероятно, что вам нужен многомерный массив, как описанодругие ответы

0 голосов
/ 19 июня 2011

Это можно сделать с помощью зубчатых массивов:

string[][] myArray;

Ваш путь на самом деле не имеет смысла:

myArray.myArray2[20] // what element is the first array pointing to?

Это должно быть как минимум (если возможно)

myArray[1].myArray2[20];

Это явно хуже стандартного способа, которым вы работали бы с зубчатыми массивами: myArray[1][20];

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...