为什么是这样?我会发现能够将一些扩展方法锁定为仅在我的一个类中使用真的很好。真的不想让某些扩展方法随处可用......而且它们看起来比常规静态方法好得多:P
为了澄清:
我想要这些扩展方法的原因是因为我正在扩展一个表单,它上面有一个 DataGridView。我已经厌倦了这样的行:
foreach(var row in grid.Rows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
foreach(var row in grid.SelectedRows.OfType<DataGridViewRow>().Where(r => (bool) r.Cells[checkBoxColumn.Index].Value))
想要一个扩展方法,这样我就可以做到
foreach(var row in grid.Rows.CheckedRows())
foreach(var row in grid.SelectedRows.CheckedRows())
所以换句话说,这个扩展方法在这个类之外根本没有用。但它会使代码更干净。当然也可以制作常规方法,这就是我最终要做的,因为这是不可能的。
Aaanyways,我只是想知道是否有人有一些很好的论据来解释为什么他们选择对可以创建使用扩展方法的地方施加这样的限制。必须在静态类中是完全有意义的。不能在嵌套的静态类中不会......至少对我来说......