C#_三次元配列

配列に悩まされるのでメモ4。めっちゃ分からなくなる。

型[ , , ] 変数 = new 型 [  Z, YX ] ;

Z:要素の数 (奥行のサイズ)
Y:1つのZに格納する要素の数 ( )
X:1つのYに格納する要素の数 ( )

※ Memo

配列を考える時、座標で考えている。hoga[1,2] は y = 1, x = 2。
y は縦軸だから、hoga[列, 行] と思いがちだが、
y番号を表し、x番号を表しているので注意!

型[, , ] 変数 = new 型[3, 3, 5]; のイメージ
クリックで拡大

f:id:koshinRan:20170405214025j:plain

 

各格子は以下の様な座標となる

f:id:koshinRan:20170405214117j:plain

 

a[0,2,3] = hoga ;
とすると
[0,2,3] に hoga 要素が代入される。

f:id:koshinRan:20170405215249j:plain

 

ex)

//a と b は同じサイズの三次元配列
int[,,] a = new int[4,3,4];
int[,,] b = new int[,,]
{
   { {   1,  2,  3 4 }, {   5,  6,  7,  8 }, {  9,10,11,12 } },
   { { 13,14,15,16 }, { 17,18,19,20 }, { 21,22,23,24 } },
   { { 25,26,27,28 }, { 29,30,31,32 }, { 33,34,35,36 } },
   { { 37,38,39,40 }, { 41,42,43,44 }, { 45,46,47,48 } }
  };

//b の要素1から48の出力
foreach (var bb in b)
{
    Console.WriteLine(bb);
}

宣言時の要素の数(サイズ) と 代入・列挙の時の index異なる
ex ) b の 48 を取得したい時は b[3,2,3];

 

 以上。

http://www.kushiro-ct.ac.jp/yanagawa/ex-2016/1-tg/02/index.html