Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转换列表<;T>;到数组(多维)_C#_.net_List_Multidimensional Array - Fatal编程技术网

C# 转换列表<;T>;到数组(多维)

C# 转换列表<;T>;到数组(多维),c#,.net,list,multidimensional-array,C#,.net,List,Multidimensional Array,可能重复: 我想要一个double[,]形式的数组,因为我不知道这个数组的长度,我想先制作一个列表,然后再使用List.ToArray()将其转换为double[,]: public double[,] FilterClampedData(double[,] data) { var finalData = new List<double[]>(); //Do some stuff on parameter return finalData.ToArray

可能重复:

我想要一个
double[,]
形式的数组,因为我不知道这个数组的长度,我想先制作一个
列表
,然后再使用
List.ToArray()
将其转换为
double[,]

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

    //Do some stuff on parameter

    return finalData.ToArray(); ///Does not compile :(
}
public double[,]FilterClampedData(double[,]数据)
{
var finalData=新列表();
//做一些关于参数的事情
返回finalData.ToArray();///不编译:(
}
finalData.ToArray()
将产生
double[][]
,因为:

  • List.ToArray()
    返回
    T[]
  • List.ToArray()
    返回
    T[][]
  • 实例化具有最大大小[列表长度,列表中最大数组长度]的新双数组
  • 使用double for cycle遍历列表(首先在列表上,嵌套在当前列表项上)并填充新数组

  • 由于
    ToArray
    返回一维数组,因此不编译也就不足为奇了。但是,如果您返回
    double[][]
    ,它会编译。您也可以使用两个嵌套循环手动构建二维数组:

    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;
    

    上面的代码假设您在
    finalData
    中至少有一项,并且
    finalData
    中所有列表的长度都相同。

    A
    List
    只能在数组长度相同的情况下转换为
    double[,]
    。它可以轻松转换为
    double[][
    (这就是
    ToArray
    返回的内容)。如果您不清楚这一点,请进行比较,并在返回一维数组时将方法签名指示二维数组作为返回。事实上,您返回的是数组数组数组。如果返回值为
    double[][
    “不。事实上,这些阵列不一定是兼容的"这不是我第一次在网上看到这个问题。你是说
    finalData.Count
    ?我找不到.Lengthproperty@Sean87当然,你是对的,它是
    Count
    ,而不是
    Length
    。我想OP应该已经知道
    C
    ,除非结果是参差不齐的。这与
    完全相反的说法不矛盾吗
    这里[第一行]-?@AngshumanAgarwal:“因为ToArray返回一维数组”-是的,它是正确的,并且等于我的语句。List.ToArray()返回T[]。List.ToArray()返回T[]。