修改多维数组

本文关键字:数组 修改 | 更新日期: 2023-09-27 18:30:48

我有一个数组变量。我可以使用 Rank 属性来获取维数,并且我知道您可以使用 foreach 访问每个元素,就好像数组被展平一样。但是,我希望修改元素并更改元素引用。我无法动态创建正确数量的 for 循环,也无法使枚举器失效。

编辑感谢您的评论,对之前在漫长疲惫的一天结束时缺乏清晰度感到抱歉。问题:

private void SetMultiDimensionalArray(Array array)
{
    for (int dimension = 0;  dimension < array.Rank;   dimension++)
    {
        var len = array.GetLength(dimension);
        for (int k = 0; k < len; k++)
        {
            //TODO: do something to get/set values
        }
     }
}
Array array = new string[4, 5, 6];
SetMultiDimensionalArray(array);
Array array = new string[2, 3];
SetMultiDimensionalArray(array);

在阅读此页面之前,我又看了一眼,似乎我需要做的就是创建一个整数数组列表并使用 GetValue 和 SetValue 的重载 -

Array.GetValue(params int[] indices)
Array.SetValue(object value, params int[] indices)

现在一切似乎都清楚了,除非有人能提出一种更好的方法。 svick已经链接到这一点,所以我将接受这个答案,除非有任何进一步的建议。

修改多维数组

很难说你到底需要什么,因为你的问题还不清楚。

但是,如果你有一个多维数组(不是交错数组),你只在运行时知道它的秩,你可以使用 GetValue() 来获取指定索引处的值(以 int s 数组的形式给出),并SetValue()来设置它。