2022/2/28
C#の配列まとめ
C#の配列についてまとめました。
大量のデータを扱うときに、多次元配列やジャグ配列を使用すると便利です。
普通の配列
説明は省略。
//① 普通に宣言
int[] a = new int[]{0,1,2,3,4};
//② 暗黙的に宣言
var a = new []{0,1,2,3,4};
//③ 値 All 0で宣言
int[] a = new int[5];
2次元配列
x方向、y方向の平面に値を保存するイメージです。
//① 普通に宣言
int[,] a = new int[,]
{
{0,1,2},{3,4,5},{6,7,8},{9,10,11},{12,13,14}
};
//② 暗黙的に宣言
var a = new[,]
{
{0,1,2},{3,4,5},{6,7,8},{9,10,11},{12,13,14}
};
//③ 値 All 0で宣言
int[,] a = new int[5,3];
int[x,y] の値は以下のようになっています。
y=0 | y=1 | y=2 | |
---|---|---|---|
x=0 | 0 | 1 | 2 |
x=1 | 3 | 4 | 5 |
x=2 | 6 | 7 | 8 |
x=3 | 9 | 10 | 11 |
x=4 | 12 | 13 | 14 |
ジャグ配列(配列の配列)
こちらも平面に値を保存するイメージですが、2次元配列と異なって、y軸方向の配列の長さが変えられます。
//① 普通に宣言 その1
int[][] a = new int[3][];
a[0] = new int[]{0, 1, 2};
a[1] = new int[]{3, 4};
a[2] = new int[]{5, 6, 7, 8};
//② 普通に宣言 その2
int[][] a =
{
new int[]{0, 1, 2,},
new int[]{3, 4},
new int[]{5, 6, 7, 8}
};
//③ 暗黙的に宣言
var a = new[]
{
new[]{0, 1, 2,},
new[]{3, 4},
new[]{5, 6, 7, 8}
};
//④ 値 All 0で宣言
int[][] a = new int[3][];
a[0] = new int[3];
a[1] = new int[2];
a[2] = new int[4];
int[x,y] の値は以下のようになっています。
y=0 | y=1 | y=2 | y=3 | |
---|---|---|---|---|
x=0 | 0 | 1 | 2 | xxx |
x=1 | 3 | 4 | xxx | xxx |
x=2 | 5 | 6 | 7 | 8 |
配列へのアクセス時の便利機能
以下、配列の中身を取り出す際に、便利な方法です。
配列の範囲アクセス
a[i..j]と記述することで、配列のi番目からj番目を指定して取り出すことができます。
var a = new[] { 1, 2, 3, 4, 5 };
var b = a[1..^1];
これで、配列bは、配列a[1]~a[3]の値を代入され、{2, 3, 4}となります。
^1は、後ろから数えて2番目を表しています。(1番目は^0)
多次元配列のforeach
多次元配列にforeachでアクセスする場合、多次元ではなく1次元として処理されます。
つまり、foreach一発で全要素へアクセスすることになります。
ジャグ配列の場合はこの方法は使えません。
var a = new[,]
{
{0,1,2},{3,4,5},{6,7,8},{9,10,11},{12,13,14}
};
foreach(var i in a)
{
Console.WriteLine(i);
}
//上記でaの要素すべてを出力する。0 1 2 3 ・・・ 14 となる。
以上です。