为什么是这样?我会找到它really很高兴能够将一些扩展方法锁定为仅在我的一个类中使用。我真的不想让某些扩展方法随处可用......而且它们看起来比常规静态方法好得多:P
为了澄清:
我想要这些扩展方法的原因是因为我正在扩展一个 Form,它上面有一个 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())
换句话说,这个扩展方法在这个类之外根本没有用处。但它会让代码变得更加简洁。当然也可以制作常规方法,这就是我最终所做的,因为这是不可能的。
不管怎样,我只是想知道是否有人有一些好的论据来解释为什么他们选择对可以创建的扩展方法进行这样的限制。必须在静态类中完全有道理。不能位于嵌套静态类中不……至少对我来说……
如果您拥有该类型的源代码,为什么要使用扩展方法?为什么不让这些扩展方法成为类型本身的成员呢?
扩展方法最适合用于扩展您未创建的类型。虽然它们是有用的工具,但它们是一个间接层,应该是最后的手段而不是首选。虽然您可以使用它们来扩展您自己的类型,但为您未创建的类型保留它们的使用更有意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)