многомерный массив c # - PullRequest
3 голосов
/ 27 мая 2011

Я хочу создать многомерное ArrayList - я не знаю размер, его нужно решить во время выполнения.

как я это сделаю и как получить к нему доступ?

Это будет массив целых чисел.

Ответы [ 3 ]

2 голосов
/ 27 мая 2011

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

List<List<int>>

А для доступа просто ссылаться на него по индексам:

List<List<int>> myList = new List<List<int>>();
int item = myList[1][2];
2 голосов
/ 27 мая 2011

Используйте

List<List<Integer>>

Список сам по себе не является многомерным, но вы можете использовать его для хранения списков, которые затем могут хранить целые числа, фактически действуя как многомерный массив. Затем вы можете получить доступ к элементам как:

// Get the element at index x,y
int element = list[x][y];

Заполнение списка начальными элементами с размерами x и y:

for (int i=0; i<x; i++)
{
    // Have to create the inner list for each index, or it'll be null
    list.Add(new List<Integer>());

    for (int j=0; j<y; j++)
    {
        list[i].Add(someValue); // where someValue is whatever starting value you want
    }
}
0 голосов
/ 27 мая 2011

Вместо потенциально зубчатых списков вы также можете использовать 2D-массив, созданный методом Array.CreateInstance , если ему не нужно изменять размер после его создания.

int[,] arrayOfInts = (int[,])Array.CreateInstance(typeof(int), 4, 5);

arrayOfInts[0,0] = 5;
Console.WriteLine(arrayOfInts[0,0]);

arrayOfInts[0,4] = 3;
Console.WriteLine(arrayOfInts[0,4]);
...