在 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];
}
}
最佳答案
(无视我之前的回答,我脑子放屁了。)
在 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
关于c# - 如何在 C# 中初始化 Data = new double[rowCount][columnCount],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44081806/