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