首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#:double[][]和double[,]

C#:double[][]和double[,]
EN

Stack Overflow用户
提问于 2013-07-24 12:48:14
回答 4查看 594关注 0票数 5

在C#中,我混淆了双倍和双倍。

我的队友给我这样的功能:

代码语言:javascript
复制
public double[][] Do_Something(double[][] A)
{
     .......
}

我想使用这个函数:

代码语言:javascript
复制
double[,] data = survey.GetSurveyData(); //Get data
double[,] inrma = Do_Something(data);

它导致一个错误:无效的参数。

我不想编辑我队友的代码。

它有办法将double[][]转换成double [,]吗?

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-24 12:52:23

double[][]double[,]有着不同的含义。

double[][]是锯齿状的,所以有些元素可以有不同的长度。

double[,]是“矩形”的,所以所有的元素都是相同的长度。

您可以编写一种方法来“转换”两者之间的差异,但您将如何纠正差异?也就是说,你将如何决定“修剪”从长的元素或扩展的短元素,以使其长方形?

票数 8
EN

Stack Overflow用户

发布于 2013-07-24 12:52:36

一个double[][]是一个双An array of arrays数组,而double[,]是一个二维双数组。

例子:

代码语言:javascript
复制
double[] Array1 = new double[] {1,2,3};
double[] Array2 = new double[] {4,5,6};
double[][] ArrayOfArrays = new double[][] {Array1,Array2};
double[,] MultidimensionalArray = new  double[,] {{1,2}, {3,4}, {5,6}, {7,8}};   
票数 9
EN

Stack Overflow用户

发布于 2013-07-24 12:54:23

代码语言:javascript
复制
static T[,] Convert<T>(T[][] array)
{
    if (array == null)
        throw new ArgumentNullException("array");
    if (array.Length == 0)
        return new T[0, 0];
    T[,] retval = new T[array.Length, array[0].Length];
    for (int i = 0; i < array.Length; i++)
        for (int j = 0; j < array[i].Length; j++)
            if (array[i].Length != retval.GetLength(1))
                throw new Exception();
            else
                retval[i, j] = array[i][j];
    return retval;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17834488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档