嵌套静态类中不允许扩展方法?

2024-01-08

为什么是这样?我会找到它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(使用前将#替换为@)

嵌套静态类中不允许扩展方法? 的相关文章

随机推荐

  • 正则表达式在一行上查找 A 而不是 B

    我正在寻找一个正则表达式来搜索我的 python 程序以查找其中的所有行foo 但不是bar 作为关键字参数传递到方法中 我正在尝试前瞻和后瞻断言 但运气不佳 有什么帮助吗 Thanks 如果你有一个字符串foo您要查找的字符串和另一个字符
  • 无法通过 CMake 链接 Boost 1.63.0

    我想做的是 正如你可以从标题中猜到的那样 通过 CMake 链接 Boost 库 我正在使用 CLion 编写跨平台代码 所以我没有其他机会 我确信我正确构建了所有内容 因为当我在 Visual Studio 中使用它时 它完全可以正常工作
  • 使用 python opencv 跟踪白色

    我想使用网络摄像头和 python opencv 跟踪白色 我已经有了跟踪蓝色的代码 frame cap read hsv cv2 cvtColor frame cv2 COLOR BGR2HSV define range of blue
  • 有没有办法在触发 lambda 之前过滤 AWS DynamoDb Stream?

    因此 我们有几个 lambda 来监听数据库上的更改 在每个 lambda 中 我们必须在一开始就进行过滤 因为这个特定的 lambda 不关心所有更改 只关心特定的更改 更明确地说 我们正在应用事件源 并且 lambda 应该是事件处理程
  • android中的tab时如何刷新ListView

    我的应用程序有三个选项卡ListView显示在每一个里面 如何编写刷新代码ListView当在选项卡之间单击时 Override public void onTabChanged String tabId if tabId tab 1 re
  • 日期功能以 mm/dd/yy 显示日期

    我正在尝试使用 VB 脚本获取 mm dd yy 格式的日期 但我找不到任何功能来满足要求 有人可以帮助我吗 我喜欢使用 NET stringbuilder 因为我可以通过调整格式说明符而不是使用字符串操作来动态切换格式 wscript e
  • 将存储过程和其他变量插入临时表

    我有一个存储过程和 3 个变量 我需要将它们全部插入临时表中的同一行 这可能吗 我试过 INSERT INTO Temp Ad B C SPInt SELECT Ad B C EXEC sp XYZ A B C 但这是行不通的 最简单的方法
  • Chart.js 为刻度添加填充

    我需要在 x 轴和 y 轴上添加填充 这个问题 如何在 Chart js 中的 Graph 和 X Y Scale 之间添加填充 https stackoverflow com questions 32095839 how to add p
  • Adsense 的自定义点击跟踪

    我需要在点击广告时识别我的用户 例如 当用户A在线时 我需要知道他是点击广告单元的人 当使用我自己的广告时 这是小菜一碟 使用 URL 重定向 但是 现在我们计划切换到 Adsense 它通过 javascript 呈现广告 因此我无法在那
  • Akka Http - 如何将 ResponseEntity 解组到 CustomClass?

    我正在使用 Akka Http 向第 3 方 API 发出请求 响应是 application json 我想使用 Akka Http 将它们转换为自定义案例类 我想做这样的事情 val request RequestBuilding Ge
  • 如何使用 Chrome 扩展更改当前选项卡的标题

    我想使用扩展名更改选项卡的标题 实际上 我在使用时遇到了困难 chrome tabs get 函数 选项卡 如何使用上面的功能呢 还有其他方法可以直接更改标题吗 chrome tabs query active true windowId
  • 如何在 Linux 中将“find”的结果通过管道传输到 mv

    如何通过管道将 查找 在 Linux 中 的结果移动到不同的目录 这是我到目前为止所拥有的 find name article mv backup 但它还不对 我收到错误缺少文件参数 因为我没有指定文件 因为我试图从管道获取它 find n
  • 为什么从数据源中删除项目时,DGV 会导致未捕获的异常?

    我有一个带有 DataGridView 的 WinForms 应用程序 该应用程序的 DataSource 属性设置为 BindingSource 反过来又具有itsDataSource 设置为 BindingList 一切工作正常 直到我
  • 如何使用 Keystone.js 添加 Array 类型的虚拟属性?

    这是我的模型的代码 Info 及其造成问题的 tokens 属性 var keystone require keystone Types keystone Field Types var Info new keystone List Inf
  • Python 如何以及何时确定变量的数据类型? [复制]

    这个问题在这里已经有答案了 我试图弄清楚 Python 3 使用 CPython 作为解释器 到底是如何执行其程序的 我发现步骤是 通过 CPython 编译器将 Python 源代码 py 文件 编译为 Python 字节码 pyc 文件
  • 返回父元素 - Cypress 中的 CSS 选择器

    有人可以在以下情况下提供帮助吗 我必须办理登机手续if语句元素是否存在 由于没有可能使用Xpath in find命令 使用 Xpath 运行时引发语法错误 我的代码看起来 cy xpath list eq index then el1 g
  • Bluebird 的 Promise.settle 无法解析正确的值

    我有以下代码 return Promise settle matches imgur uploadUrl map function inspection if inspection isFulfilled return inspection
  • 如何使用 JavaScript 访问 SVG 元素?

    我正在摆弄 SVG 希望能够在 Illustrator 中创建 SVG 文件并使用 JavaScript 访问元素 这是 Illustrator 推出的 SVG 文件 它似乎还向我删除的文件的开头添加了一堆垃圾
  • 自动完成在自动完成窗口中显示相关数据

    I have 3 input fields 1 for data type and other 2 are its relevant when i press button in data type field i want to disp
  • 嵌套静态类中不允许扩展方法?

    为什么是这样 我会找到它really很高兴能够将一些扩展方法锁定为仅在我的一个类中使用 我真的不想让某些扩展方法随处可用 而且它们看起来比常规静态方法好得多 P 为了澄清 我想要这些扩展方法的原因是因为我正在扩展一个 Form 它上面有一个