6

重複の可能性:
list<> を多次元配列に変換するにはどうすればよいですか?

double[,]この配列の長さがわからないので、この目的のために の形式の配列を持ちListたいList<T>.ToArray()ですdouble[,]

public double[,] FilterClampedData(double[,] data)
{
    var finalData = new List<double[]>();

    //Do some stuff on parameter

    return finalData.ToArray(); ///Does not compile :(
}
4

3 に答える 3

5

1 次元配列を返すのでToArray、これがコンパイルされないのも不思議ではありません。ただし、を返す場合double[][]はコンパイルされます。入れ子になった 2 つのループを使用して、手動で 2 次元配列を作成することもできます。

var R = finalData.Count;
var C = finalData[0].Length;
var res = new double[R, C];
for (int r = 0 ; r != R ; r++)
    for (int c = 0 ; c != C ; c++)
        res[r, c] = finalData[r][c];
return res;

上記のコードは、 に少なくとも 1 つの項目がありfinalData、内部のすべてのリストの長さがfinalData同じであることを前提としています。

于 2012-07-02T14:35:52.327 に答える
1

finalData.ToArray()double[][]次の理由で生成されます。

  • List<T>.ToArray()戻り値T[]
  • List<T[]>.ToArray()戻り値T[][]
于 2012-07-02T14:35:21.013 に答える
1
  1. 最大サイズ [リストの長さ、リスト内の最大配列長] で新しい double 配列をインスタンス化します
  2. double for cycle (リストの最初、現在のリスト項目のネスト) を使用してリストをウォークスルーし、新しい配列を埋めます
于 2012-07-02T14:35:29.127 に答える