【问题标题】:Modify multi Dimensional array修改多维数组
【发布时间】:2013-09-10 23:15:31
【问题描述】:

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

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

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 已经链接到这个,所以我会接受这个答案,除非有任何进一步的建议。

【问题讨论】:

  • 如果我能看到一些代码,这将更容易概念化。
  • 肯定会编辑问题,但要到明天才能编辑,谢谢
  • C# 中的数组实现IEnumerable&lt;T&gt;。究竟是什么问题?请参阅此帖子以获得良好的描述 - stackoverflow.com/questions/7173266/…
  • 您的问题的标题令人困惑。在 C# 中,多维数组(例如int[,])与锯齿数组(例如int[][])不同。从你的描述来看,你是在处理前者,对吗?
  • @svick 你是对的,不是锯齿状数组。

标签: c# arrays


【解决方案1】:

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

但是如果你有一个多维数组(不是锯齿状数组),它的秩只在运行时才知道,你可以使用GetValue() 来获取指定索引处的值(作为ints 的数组给出)和@987654322 @ 设置它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-29
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 2017-11-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-04
    相关资源
    最近更新 更多