修改多维数组

时间:2013-09-10 23:15:32

标签: c# arrays

我有一个Array变量。我可以使用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已与此相关联,因此除非有任何进一步的建议,否则我将接受此答案。

1 个答案:

答案 0 :(得分:1)

很难说你究竟需要什么,因为你的问题很不清楚。

但是如果你有一个多维数组(不是锯齿状数组),你的级别只在运行时知道,你可以使用GetValue()来获取指定索引的值(以int的数组给出)和SetValue()来设置它。