2012-01-25 4 views
3

Я задавался вопросом, можно ли получить доступ к определенному элементу многомерного массива с использованием массива, а не нескольких целых чисел.Доступ к массиву с массивом индексов

Как, например:

int[,] map = sampleMap; 
int[] position = { 1, 2 }; 

sampleObject = map[position]; // This line won't work. "cannot implicitly convert type 'int[]' to 'int'" 

Вместо:

sampleObject = map[position[1], position[2]] 

Конечно, при работе только с 2 размерами, это не было бы большой проблемой, но представьте себе, у меня было много размеры, как 10:

map[position[1], position[2], position[3], ..., position[10]] 

было бы намного лучше и изящнее, чтобы просто написать:

map[position] 

Я искал вокруг, но лучшее, что я нашел, было «Как получить доступ к массивам [вставить язык программирования здесь]» или «как получить доступ к элементам из [вставить массив типа здесь]» или что-то вроде что.

ответ

5

Посмотрите на Array.GetValue(int[]) метод

+0

yup, that works: \t 'int [,] map = {{1,1}, {1,2}, {1,3}}; \t Console.WriteLine (map.GetValue (новый [] {1,1})); // –

0

Вот подумал:

Предположим, ваш массив содержит 20 строк и 20 столбцов.

Допустим, вы хотите получить доступ к 26-й элемент в вашей карте (с начала карты, сверху вниз, слева направо),

Итак, ваша координатная функция принимает 26 в качестве параметра, и,

26/20 = 1 
26 % 20 - 1 = 5 

переводит map[26] к map[1, 5], возвращая его значение

не слишком уверен, что если это будет полезно для вас, только мысль!

+0

Правда, это сработало бы, но я по-прежнему предпочитаю метод Array.GetValue (int []), предложенный Новаковым. Это более интуитивно понятный и гораздо более простой в использовании, особенно при работе со многими измерениями. – Nolonar

Смежные вопросы