2016-10-20 7 views
0

3D配列の正しい使い方を理解することができません。私はC#を使用しています。私の主な混乱は、どのインデックスがZインデックスであるかです。残念ながら、私は多くのグーグルを行っていますが、私が知る情報の大半は2D配列に関する情報でした。 YouTubeでこの男は、しかし、第3のインデックスはZであったことを言った:https://www.youtube.com/watch?v=Eqo552n1DSc3D配列内のZインデックスを指し示すインデックス

の場合とチュートリアルによれば:

public string[,,] array3DString = new string[2, 5, 6]; 

2 = X 5 = Y、および6 = Z。

最初はこれが理にかなっていましたが、視覚的に物事を見るのに役立ちます。外、私はループと3次元配列を反復処理しようとしたとき、最初のインデックスはZであるために、それが原因で、当然のことながら、より多くの意味を成していたように私には思えた

class Test 
    { 
     public string[,,] array3DString = new string[2, 5, 5]; 
     public void SetArray3DString() 
     { 
      for (int zIndex = 0; zIndex < 2; zIndex++) 
      {    
       for (int r = 0; r < 5; r++) 
       { 
        for (int c = 0; c < 5; c++) 
        { 
         array3DString[zIndex, r, c] = "z" + zIndex + "r" + r + "c" + c;     
        } 
       } 
      } 
     }  
     public void PrintArray3DString() 
     { 
      for (int zIndex = 0; zIndex < 2; zIndex++) 
      { 
       Console.WriteLine("Z Index - " + zIndex); 
       for (int r = 0; r < 5; r++) 
       { 
        for (int c = 0; c < 5; c++) 
        { 
         if (c < 4) 
         { 
          Console.Write(array3DString[zIndex, c, r] + ","); 
         } 
         else 
         { 
          Console.WriteLine(array3DString[zIndex, c, r]); 
         } 
        } 
       } 
      } 
     } 

    } 

    class Program 
    { 
     static void Main(string[] args) 
     {    
      Test newTest = new Test(); 
      newTest.SetArray3DString(); 
      newTest.PrintArray3DString(); 
      while (true); 
     } 
    } 

:だから私はこの簡単なプログラムを書きましたループは索引付けされる最後のものです。出力は次のとおりです。

Z Index - 0 
z0r0c0,z0r1c0,z0r2c0,z0r3c0,z0r4c0 
z0r0c1,z0r1c1,z0r2c1,z0r3c1,z0r4c1 
z0r0c2,z0r1c2,z0r2c2,z0r3c2,z0r4c2 
z0r0c3,z0r1c3,z0r2c3,z0r3c3,z0r4c3 
z0r0c4,z0r1c4,z0r2c4,z0r3c4,z0r4c4 
Z Index - 1 
z1r0c0,z1r1c0,z1r2c0,z1r3c0,z1r4c0 
z1r0c1,z1r1c1,z1r2c1,z1r3c1,z1r4c1 
z1r0c2,z1r1c2,z1r2c2,z1r3c2,z1r4c2 
z1r0c3,z1r1c3,z1r2c3,z1r3c3,z1r4c3 
z1r0c4,z1r1c4,z1r2c4,z1r3c4,z1r4c4 

これは私が期待しているものです。最後のインデックスZを作ろうとしたとき、私はちょっと混乱しました。

私は正しいですか、またはYoutubeビデオの男の人ですか?どのインデックスをZにする必要がありますか?それは問題なの?

参考までに、私もこのサイトを試しました:https://www.tutorialspoint.com/csharp/csharp_multi_dimensional_arrays.htm しかし、彼らは主に2Dアレイに焦点を当てていて、この単純な質問に私は答えませんでした。

ご協力いただきありがとうございます。

答えて

0

保存方法に関する規則はありません。それは、それがメモリ内でどのようにシリアライズされるかに関するすべてです。あなたのコードの違いがあり

、充填および印刷中:

中綿:

array3DString[zIndex, r, c] <--- r = 2nd index.. 

印刷:

array3DString[zIndex, c, r] <--- r = 3rd index.. 

だから、これは限り寸法がクラッシュしませんcとrの値が等しい

+0

だから、私はZインデックスと考えても問題ではないと言っていますか? – Simflare

+0

そして、私はそれらを視覚的に正しく見えるように印刷しました。迅速な返信のための乾杯! – Simflare

+0

個人的に私はこの目的のために多次元配列を避けるでしょう。むしろ1次元配列を使用したいと思います。私がオフセットを計算したいのであれば、((width * height)* z)+(width * y)+ x'しかし、私はリニアスキャンを行います。 –

関連する問題