2017-05-20 3 views
2

は、私が言うことができます。はどうすれば初期化でしょうデータ=新しいダブル[をrowCount] [columnCountの] C#でJavaでは

private double[][] data; 

をし、それを初期化します。

Data = new double[rowCount][columnCount] 

しかし、C#で、Iをと言うでしょう

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

どのように私はCで同じ方法でそれを初期化するでしょうか?

EDITはここ

は、クラスは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]; 
     } 
} 

答えて

2

(私の以前の回答を無視し、私は脳のおならを持っていた。)

のC#では、私たちは持っています2つの異なる種類の多次元配列。正方形の配列(double[,])とギザギザの配列(double[][])があります。

正方配列は真の多次元配列です。第1の次元は、サブアレイのセット長を有し、第2の次元の各アレイも、セット長さを有する。以下同様である。グリッドやデカルトグラフなどの定義によく使用されます。

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

どちらの配列タイプでも、いくつの次元に行くことができるのかに関する固定の制限はありません。実際には、次のように宣言され初期化されます。私はあなたが作るためのくそ十分な理由を持っていることをお勧めしたいのに...

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

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

...またはジャグ配列:たとえば、10次元の正方配列を持つことができますその多くの次元を持つ配列:P

関連する問題