我有一些代碼可以與二維網格(數組)一起工作,並且最後有很多循環遍歷網格中每個項目的例程。在二維數組上實現LINQ風格的擴展方法
但我認爲這將是很好,如果我可以做這個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]);
}
智能感知似乎並沒有認識到MyType[3,3]
類型的對象在這個擴展方法。我是否錯過了編寫二維數組的擴展方法?
2.什麼是推薦的方式來實現這種模式,允許我有條件地設置網格值?使用上面的代碼,設置傳遞的值不會影響原始數組。
編輯:
好了,原來是同班它是從所謂的內實施這種擴展方法後,我愣神離開它宣佈爲private
當我把它移動到外部類。我猜它不會在同一個類中作爲私有方法工作,並且顯然不能作爲外部類中的私有方法工作。
儘管如此,我仍然很想看到第二個答案。
我很確定你不是指'私人' –
D'oh!就是這樣。我最初在同一個類中使用了擴展方法,並將它設置爲私有,但是當我將它移動到一個外部類時,看起來像忘了修改它。咄! –
就是這樣,你可以使擴展方法爲private,它仍然可以在你定義的靜態類中作爲擴展方法工作,它只是不能從外部訪問。儘管這樣做沒什麼意義。 –