在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];
}
}
答案 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