配列変数があります。Rank プロパティを使用して次元数を取得できます。配列がフラット化されているかのように、foreach を使用して各要素にアクセスできることもわかっています。ただし、要素を変更し、要素の参照を変更したいと考えています。正しい数の for ループを動的に作成できず、列挙子を無効にすることもできません。
EDIT コメントをありがとう、長い疲れた一日の終わりに以前の明確さの欠如について申し訳ありません. 問題:
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 はこれにリンクしているので、これ以上の提案がなければこの回答を受け入れます。