我最近开始有效地使用C#扩展方法。 SO示例和文档表明它们仅用于实例方法(即使用this
关键字)。可以将它们(或其他方法)与静态/类方法一起使用吗?
(我的特殊要求是将Java代码转换为C#,其中“大多数代码”不需要编辑.Java实例方法(例如Java String.indexOf()
)可以通过调用C#{{1的扩展方法来路由}})。我想对Java string.IndexOf()
=>做同样的事情。 C#Math.abs()
)。
摘要否。答案表明这样做是合理的,但不太可能很快发生。变通办法需要编辑创建新的类或类似的东西,可能不值得。
答案 0 :(得分:3)
您无法创建静态扩展方法 - 这也是我希望能够做到的事情!
您可以使用标准后缀创建自己的静态类,即MathJSyntax.abs(..),它将调用Math.Abs(..)
答案 1 :(得分:1)
答案 2 :(得分:0)
符号本身不允许你这样做,“this”类参数需要传入类的实例。如果他们打算至少最终添加它,他们就不会这样写它
所以简短的答案是不存在的,永远不会是!