現在、C#の基礎を学んでおり二次元配列のチャプターに入り勉強している段階で、
理解できない部分があり質問させていただきます。
C#
1string[][] teams = { 2 new string[] {"勇者","戦士","魔法使い"}, 3 new string[] {"盗賊","忍者","商人"}, 4 new string[] {"スライム","ドラゴン","魔王"}, 5 new string[] {"踊り子","僧侶","アーチャー"}, 6 }; 7 8 foreach(string[] team in teams) 9 { 10 foreach(string player in team) 11 { 12 Console.Write(player + " "); 13 } 14 Console.WriteLine(); 15 }
上記のコードは、二次元配列をループ処理するというコードになっております。
今回私が理解できていない部分としては、下記の項目です。
C#
1foreach(string player in team)
foreach(string[] team in teams) この部分では、
二次元配列を一元配列に変換しているという事は分かっているのですが、
その次の処理として、playerという名前のstring型に、
一次元配列に戻したteamという配列が入っているという理解で合っていますでしょうか。
お答えいただければ幸いです。
string[][] teams というのは、本物の 2 次元配列ではなく、ジャグ配列ですね。ジャグ配列は配列の配列なので、最初に foreach(string[] team in teams) でジャグ配列の要素である 1 次元配列を team として取り出し、次に foreach(string player in team) で team の各要素である player を取り出すことになります。
https://www.wareko.jp/blog/c-sharp-jagged-array-perfect-master
https://www.atmarkit.co.jp/ait/spv/1701/10/news021.html
怖いのはこれをpaizaで2次元配列として解説しているところですかね
paizaにある参考URLには全部「ジャグ配列」、「配列の配列」といった感じで紹介されているのに・・・
ご返信いただきありがとうございます。
ジャグ配列について初めて聞きました。
二次元配列とジャグ配列の違いを完全理解はできていないのですが、
今回のコードの全体的な動きは理解することが出来ました。
ありがとうございます!
そうですよね、、私も今回皆さんに教えて頂いてお陰で
ジャグ配列の存在を知ったため、初めはこれを完全に二次元配列として覚えてしまっていました。
回答3件
あなたの回答
tips
プレビュー