【发布时间】:2011-03-25 10:22:28
【问题描述】:
我需要遍历任意等级的数组。这是用于读写的,所以GetEnumerator 将不起作用。
Array.SetValue(object, int) 不适用于多维数组。
Array.SetValue(object, params int[]) 将需要过多的算术来迭代多维空间。它还需要动态调用来绕过签名的params 部分。
我很想固定数组并用指针对其进行迭代,但我找不到任何说明多维数组保证是连续的文档。如果他们在维度的末尾有填充,那么这将不起作用。我也希望避免使用不安全的代码。
是否有一种简单的方法可以仅使用单个索引来顺序寻址多维数组?
【问题讨论】:
-
我没有看到使用“不安全”代码的错误。当您真正知道自己在做什么时使用指针是安全的,而且它是一种可行且有效的解决方案。
-
顺便说一句,在预期
params int[]的地方传递int[]是完全有效的。 -
@dtb,您在两个语法点上似乎都是正确的。我从来不知道你可以直接将数组传递给 params 数组参数。
-
@Mikael Svenson,我同意不要担心不安全的代码,但我也认为如果有等效的安全解决方案,应该避免它。
标签: c# arrays iteration padding pinning