我如何在C#中初始化Data = new double [rowCount] [columnCount]

时间:2017-05-20 04:09:56

标签: c#

在Java中,我可以说:

private double[][] data;

并初始化它:

Data = new double[rowCount][columnCount]

然而,在C#中,我会说

private double[][] Data { get; set; }

我如何在C#中以相同的方式初始化它?

修改

这是迄今为止在C#中的课程:

namespace Carnotaurus.UtilityPack.Models.StatModels.Matrices
{
    public class Matrix
    {

        public int RowCount { get; }

        public int ColumnCount { get; }

        public double[][] Data { get; set; }

        public Matrix(double[][] dat)
        {
            Data = dat;
            RowCount = dat.Length;
            ColumnCount = dat[0].Length;
        }

        public Matrix(int rowCount, int columnCount)
        {
            RowCount = rowCount;
            ColumnCount = columnCount;
            //Data = new double[rowCount][columnCount];
        }
}

1 个答案:

答案 0 :(得分:2)

(忽略我之前的回答,我有一个大脑放屁。)

在C#中,我们有两种不同的多维数组。有方形数组(double[,])和锯齿状数组(double[][])。

方阵是真正的多维数组。第一维具有设定长度的子阵列,第二维中的每个阵列也具有设定长度,依此类推。它们通常用于定义网格或笛卡尔图等内容。您可以像这样定义和初始化它们:

public double[,] Data { get; set; }

public Matrix(int rowCount, int columnCount)
{
    Data = new double[rowCount, columnCount];
}

锯齿状数组被视为“数组数组”。每个子阵列基本上是一个不同的阵列,并且可以或可以不具有与其所有兄弟阵列相同的长度。因此,必须单独初始化每个子数组。它们被声明并初始化为:

public double[][] Data { get; set; }

public Matrix(int rowCount, int columnCount)
{
    Data = new double[rowCount][];

    for (int i = 0; i < rowCount; i++)
    {
        Data[i] = new double[columnCount];
    }
}

对于任何一种数组类型,您可以使用多少维度进行固定限制。例如,您可以使用第10维方阵:

double[,,,,,,,,,] Data;

...或锯齿状数组:

double[][][][][][][][][][] Data;

...虽然我建议你有一个很好的理由来制作那么多维度的数组。 :P