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

标签 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];
        }
}

最佳答案

(无视我之前的回答,我脑子放屁了。)

在 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/

相关文章:

c# - 重写 api 和反序列化对象

c# - 右键单击 Silverlight Datagrid 选择

c# - ASP.NET MVC 发布模型始终为空

c# - Json 返回表单 Controller 不工作

c# - 使用数据注释对属性子集进行强制验证

c# - 我们可以像 sql 查询一样查询数据集吗?

c# - 简化异常处理

c# - Linq to SQL C# 获取所有子/子子类别中的产品太慢

c# - 应用程序永远不会在调试中完成启动,可能是 Redis?

c# - 在 C# 程序集的上下文中,激活作用域指的是什么?