16

重複の可能性:
C# の多次元配列と配列の配列の違いは何ですか?

と の違いを説明できる人はいますstring[][]string[,]?

4

5 に答える 5

26

string[,]多次元配列です。

多次元配列

string[][]ジャグ配列です:

ジャグ配列は、要素が配列である配列です。ジャグ配列の要素は、さまざまな次元とサイズにすることができます。ジャグ配列は、「配列の配列」と呼ばれることがあります。

ジャグ配列

于 2012-10-06T07:07:43.760 に答える
6

string[,]-多次元配列(長方形配列)

多次元は、複数の次元を持つことができます。次の例は、2 行 2 列の 2 次元配列を作成する方法を示しています。

宣言 :

string[,] contacts;

インスタンス化:

string[,] contacts = new string[2,2];

初期化:

string[,] contacts = new string[2, 2] { {"John Doe","johndoe@example.com"}, {"Jane Doe","janedoe@example.com"} };



string[ ][ ]-ジャグ配列(Array-of-arrays)

ジャグ配列は、要素が配列である配列です。ジャグ配列の要素は、さまざまな次元とサイズにすることができます。ジャグ配列は、「配列の配列」と呼ばれることがあります。

ジャグ配列は、さまざまな長さの多数の行を効率的に格納できます。任意のタイプのデータ、参照または値を使用できます。ジャグ配列のインデックス作成は高速です。それらの割り当てはやや遅いです。

ジャグ配列は多次元配列よりも高速です

宣言 :

string[][] contacts;

インスタンス化:

string[][] contacts = new string[2][];
for (int i = 0; i < contacts.Length; i++) 
{
   contacts[i] = new string[3];
}

初期化:

string[][] contacts = new string[2][] { new string[] {"john@example.com","johndoe@example.com"}, new string[] {"janedoe@example.com","jane@example.com","doe@example.com"} };
于 2012-10-06T07:07:05.957 に答える
4

string[][]ジャグ配列として

ジャグ配列は、要素が配列である配列です。ジャグ配列の要素は、さまざまな次元とサイズにすることができます。ジャグ配列は、「配列の配列」と呼ばれることがあります。

一方string[,]多次元配列である

配列は複数の次元を持つことができます

于 2012-10-06T07:07:52.120 に答える
2

違いには次の 2 つの側面が重要です。

メモリに関して:

[n,m] - [n*m] [n][m] - サイズ n の単純な配列として保存されます。各要素はサイズの配列へのポインターです。メートル。

アクセスに関して:

[n,m] - セル i,j にアクセスするには、[n*m] 配列のポインターを取得し、n*width+m だけオフセットしてから、値にアクセスします。[n][m] - セル i,j にアクセスするには、インデックス n (オフセット #1) でサブ配列ポインターにアクセスし、インデックス m (オフセット #1) でサブ配列にアクセスします。

[][] 両方の面で優れています。アクセスがより効率的になり、メモリがより柔軟になります。また、その行の各セルに対して完全な多次元アクセスを実行しないため、1 つの行に 1 回アクセスするだけで、さらに効率的に処理できます。

ただし、[,] には利点があります。行列の幅が固定されていることが常にわかります。[][] を使用すると、各サブ配列は異なる長さを持つことができ、null にすることもできます。これは利点と見なすことができますが、場合によってはその逆も役立ちます。

于 2012-10-06T07:13:51.267 に答える
1

string[][] (ジャグ配列)は固定数の行と可変長の列を持つ配列の配列ですが、string[,] (長方形配列)は固定数の行と列を持つ行列です。そこでは良い議論が行われています

于 2012-10-06T07:09:51.523 に答える