2次元配列とは、駅のコインロッカーのようなものです。
要素を入れる箱を、行方向(縦)と列方向(横)に並べたものです。
## 2次元配列の宣言と作成
宣言と作成を行うことで、2次元配列をつくることができます。
〈 宣言 〉 とは、2次元配列の型と名前を決めることで、 〈 作成 〉 とはメモリ上に2次元配列をつくることです。
型名[,]配列名; // 2次元配列の宣言
配列名 = new 型名[行の数, 列の数]; // 2次元配列の作成
は配列の型名と配列名を決めて、2次元配列の宣言をしています。
〈 型名[] 〉 と書くと1次元配列ですが、 〈 型名[,] 〉 と書くと2次元配列になります。
は配列の行数と列数を決め、new演算子でメモリ上につくった2次元配列をの配列に代入しています。
これで、行数と列数を決めた2次元配列がメモリ上につくられました。
## 2次元配列の宣言と作成を同時に行う
さきほどは、2次元配列の宣言と作成を別々に行いましたが、同時に行うこともできます。
型名[,]配列名 = new 型名[行の数, 列の数];
配列の宣言と作成を同時に行っています。
=(代入演算子)の右辺で行数と列数を決めた2次元配列をメモリ上につくり、左辺の配列に代入しています。
## 2次元配列の好きな場所に値を代入
配列名[行方向の添え字, 列方向の添え字] = 値;
2次元配列に値を代入しています。
〈 行方向の添え字 〉 とは配列の行の番号で、〈 列方向の添え字 〉 とは配列の列の番号です。
[]に行と列の添え字を指定することで、2次元配列の好きな場所に代入できます。
## 2次元配列の宣言の例文
using static System.Console;
class Test
{
static void Main()
{
string[,] kago; // 2次元配列kagoの宣言
kago = new string[2, 2];// 2次元配列kagoにメモリ上につくった行2x列2の2次元配列を代入
kago[0, 0] = "イチゴ"; // 2次元配列kagoの添え字[0, 0]に 〈 イチゴ 〉 を代入
Write(kago[0, 0]); // 2次元配列kagoの添え字[0, 0]の要素を表示
}
}
イチゴ
string型の2次元配列kagoの宣言をしています。
2次元配列kagoに、メモリ上につくった行2x列2の2次元配列を代入しています。
とを同時に行い、 〈 string[,] kago = new string[2, 2]; 〉 と書くこともできます。
2次元配列kagoの0行目、0列目の箱に 〈 イチゴ 〉 を代入しています。
## 2次元配列の初期化
2次元配列の初期化とは、2次元配列の宣言と作成と初期値の代入をすることです。
// new演算子を省略した場合
型名[,]配列名 = { // 2次元配列の宣言
{ 値, 値, … },
{ 値, 値, … }, // 2次元配列に値を代入
};
// new演算子を省略しない場合
型名[,]配列名 = new 型名[行の数, 列の数] {
{ 値, 値, … },
{ 値, 値, … },
};
配列の型名と名前を決めて、2次元配列の宣言をします。
{ 値, 値, … },
2次元配列に値を代入しています。
ブロックの数は、左側の添え字の数になります。
1つのブロックの値の数は、右側の添え字の数になります。
好きな添え字の箱に値を代入できます。
型名[,]配列名 = new 型名[行の数, 列の数] {
{ 値, 値, … },
{ 値, 値, … },
};
new演算子を省略しないでこのように書くこともできますが、冗長になってしまう為あまりこの書き方はしません。
## 2次元配列の初期化の例文
using static System.Console;
class Test
{
static void Main()
{
string[,] kago = { // 2次元配列kagoの宣言
{ "イチゴ", "ichigo" }, // 添え字[0, 0]と[0, 1]の値を指定
{ "ミカン", "mikan" }, // 添え字[1, 0]と[1, 1]の値を指定
};
Write(kago[1, 1]); // 添え字[1, 1]の要素の 〈 mikan 〉 を表示
}
}
mikan
配列の型名と名前を指定し、2次元配列kagoの宣言をしています。
添え字[0, 0]に 〈 イチゴ 〉 を添え字[0, 1]に 〈 ichigo 〉 を代入しています。
添え字[1, 0]に 〈 ミカン 〉 を添え字[1, 1]に 〈 mikan 〉 を代入しています。
添え字[1, 1]の要素の 〈 mikan 〉 を表示しています。