gpt4 book ai didi

c# - 嵌套静态类中不允许使用扩展方法?

转载 作者:太空狗 更新时间:2023-10-29 17:53:06 25 4
gpt4 key购买 nike

这是为什么?我会发现能够将一些扩展方法锁定为仅在我的一个类中使用,这真的很好。真的不想让某些扩展方法随处可用……而且它们看起来比常规静态方法好得多: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())

所以换句话说,这个扩展方法在这个类之外根本就没有用。但这会使代码更清晰。当然也可以制作常规方法,这就是我最终所做的,因为这是不可能的。

Aaanyways,我只是想知道是否有人有一些很好的论据来说明为什么他们选择在可以创建和使用扩展方法的地方施加这样的限制。 必须在静态类中 完全有道理。 不能在嵌套的静态类中不……至少对我来说……

最佳答案

如果您拥有该类型的源代码,为什么要使用扩展方法?为什么不直接让这些扩展方法成为类型本身的成员?

扩展方法最好用于扩展您未创建的类型。虽然它们是有用的工具,但它们是一个间接层,应该是最后的手段而不是第一个手段。虽然您可以使用它们来扩展您自己的类型,但将它们用于您未创建的类型更有意义。

关于c# - 嵌套静态类中不允许使用扩展方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com