【C#】ジェネリクス
ジェネリクスとは
型をパラメタとして与えられるようにすることで、型違いで同じ内容のクラスや関数を生成できるという仕組み。上手く使うとクラスや関数を型の数だけ定義する手間が省ける。
日本語だと総称的プログラミング(generic programming)。
活用例
二次元配列で指定されたindexを中心として、周囲の要素をDictionaryで取れるようにする構造体。
/// <summary> /// 周囲のセルを取得 /// </summary> public readonly struct AroundCell<T> { public T CenterCell { get; } public Dictionary<DIRECTION, T> AroundCells { get; } public AroundCell(T[,] map, int centerX, int centerZ) { CenterCell = map[centerX, centerZ]; AroundCells = new Dictionary<DIRECTION, T>(); int xLength = map.GetLength(0); int zLength = map.GetLength(1); for (int x = -1; x <= 1; x++) for (int z = -1; z <= 1; z++) { if (x == 0 && z == 0) continue; int checkX = centerX + x; int checkZ = centerZ + z; if (checkX >= 0 && checkX < xLength && checkZ >= 0 && checkZ < zLength) { var dir = Positional.GetDirection(x, z); AroundCells.Add(dir, map[checkX, checkZ]); } } } }