日期:2014-05-17  浏览次数:20993 次

请教一个关于数组和赋值的问题
本帖最后由 Mr_Jis 于 2013-09-18 14:31:26 编辑
例如,我有一个方法,每10秒执行一次,里面有个二维数组A[IndexA][IndexB],这个A是作为另两个数组B、C的下标即B[A[IndexA][IndexB]],C[A[IndexA][IndexB]]。

问题:
我是应该用一个变量把数组A存起来,再给B、C,即:
index=A[IndexA][IndexB]
B[index]
C[index]

还是直接调用,即:
B[A[IndexA][IndexB]]
C[A[IndexA][IndexB]]

哪个效率高点呢??

------解决方案--------------------
我是应该用一个变量把数组A存起来,再给B、C,即:
index=A[IndexA][IndexB]
B[index]
C[index]

还是直接调用,即:
B[A[IndexA][IndexB]]
C[A[IndexA][IndexB]]

都是一样一样滴.最多多用点空间,性能基本相同的情况下还是注重可读性吧,一旦改动,
也许
B[A[IndexA][IndexB]]
C[A[IndexA][IndexB]]
这样的就坑爹了.
------解决方案--------------------
你这个根本不是二维数组,而是交错数组。

因为交错数组不能直接寻址,所以效率要远远低于二维数组。

本质上,二维数组是一维数组的一种语法糖(相对于机器代码而言,不是相对IL而言)
当你写 int[x, y]的时候,其实就是定义了int[x * y]
当你访问 arr[i, j]的时候,其实访问的是arr[i * y + j]