使用索引数组访问数组

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]

我一直在寻找相关内容,但最好的我发现的只有 "如何在[插入编程语言]中访问数组" 或 "如何从[插入数组类型]访问元素" 等类似的文章。

2个回答

4

没错,这个可以运行:int[,] map = {{1,1}, {1,2}, {1,3}}; Console.WriteLine(map.GetValue(new[] {1,1})); // 2 - Paolo Falabella

0

这里有一个想法:

假设你的数组包含20行和20列。

假设你想要访问地图中第26个元素(从地图开始,从上到下,从左到右),

因此,你的坐标函数接受26作为参数,并且,

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

map[26] 转换为 map[1, 5],并返回其值

不确定这是否对您有所帮助,只是一个想法!


没错,这样做是可行的,但我仍然更喜欢 Novakov 建议的 Array.GetValue(int[]) 方法。它更直观、更易于使用,尤其是在处理多维数组时。 - Nolonar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接