2次元グリッド(配列)で動作するコードがいくつかあり、グリッド内の各アイテムをループする多くのルーチンが作成されました。
しかし、拡張メソッドを使用してこのLINQスタイルを実行できればいいと思いました。
これが私がこれまでに試したことです:
private static void ForEach(this MyType[,] grid, Action<MyType> action)
{
for (int row = 0; row < grid.GetUpperBound(0); row++)
for (int col = 0; col < grid.GetUpperBound(1); col++)
action(grid[row, col]);
}
1. Intellisenseは、タイプのオブジェクトでこの拡張メソッドを認識していないようですMyType[3,3]
。2次元配列の拡張メソッドを書くことについて何かが足りませんか?
2.グリッド値を条件付きで設定できるようなパターンを実装するための推奨される方法は何ですか?上記のコードを使用して、渡された値を設定しても、元の配列には影響しません。
編集:
private
さて、元々この拡張メソッドをそれが呼び出されたのと同じクラス内に実装した後、私はそれを外部クラスに移動したときのように愚かに宣言したままにしました。同じクラスのプライベートメソッドとしては機能せず、外部クラスのプライベートメソッドとしても機能しないことは明らかだと思います。
それでも、2番目の答えを見たいと思います。