在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];
}
}发布于 2017-05-20 04:49:03
(无视我先前的回答,我的脑子里放了个屁。)
在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
https://stackoverflow.com/questions/44081806
复制相似问题