C# 扩展方法是否仅可用于实例方法?

pet*_*ust 2 c# extension-methods static

我最近开始有用地使用 C# 扩展方法。SO 示例和文档表明它们仅用于实例方法(即使用this关键字)。可以将它们(或其他方法)与静态/类方法一起使用吗?

(我的特殊要求是将 Java 代码转换为 C#,其中“大部分代码”不需要编辑。Java 实例方法(例如 Java String.indexOf())可以通过调用 C# 的扩展方法路由string.IndexOf())。我想对 Java Math.abs()=> C#做同样的事情Math.Abs())。

总结不。答案表明,拥有它是一件合理的事情,但不太可能很快发生。变通方法需要编辑创建新类或类似的东西,可能不值得。

xyz*_*xyz 6

您不能创建静态扩展方法 - 这也是我希望能够做到的!

您可以使用标准后缀创建自己的静态类,即 MathJSyntax.abs(..) 它将调用 Math.Abs​​(..)