1

配列変数があります。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 はこれにリンクしているので、これ以上の提案がなければこの回答を受け入れます。

4

1 に答える 1

2

あなたの質問は非常に不明確であるため、正確に何が必要かを判断するのは困難です。

ただし、実行時にしかランクがわからない多次元配列 (ジャグ配列ではない) があるGetValue()場合は、指定したインデックス ( ints の配列として与えられる)で値を取得してSetValue()設定するために使用できます。

于 2013-09-11T00:36:21.370 に答える