.net 您可以使扩展方法成为静态/共享的吗?

.net 您可以使扩展方法成为静态/共享的吗?,.net,extension-methods,.net,Extension Methods,好吧,我可能误解了一些事情,但据我所知 扩展方法必须包含在模块中,而不是类中 您不能使模块中的方法成为静态/共享的 因此,如果不实例化类,就不能在类上使用扩展方法 换句话说,您不能对名为“MyExtensionMethod”的字符串创建扩展方法并使用: 但是 Dim test As String test.MyExtensionMethod("string") 这是正确的吗?或者有没有办法让扩展方法作为静态方法工作?你说得对。扩展方法只能作用于类型的实例 不,不幸的是,没有巧妙的方法来编写

好吧,我可能误解了一些事情,但据我所知

  • 扩展方法必须包含在模块中,而不是类中
  • 您不能使模块中的方法成为静态/共享的
  • 因此,如果不实例化类,就不能在类上使用扩展方法
换句话说,您不能对名为“MyExtensionMethod”的字符串创建扩展方法并使用:

但是

Dim test As String
test.MyExtensionMethod("string")

这是正确的吗?或者有没有办法让扩展方法作为静态方法工作?

你说得对。扩展方法只能作用于类型的实例


不,不幸的是,没有巧妙的方法来编写作用于类型本身的扩展方法,其行为类似于静态方法。

谢谢你的回答。但这似乎是一个令人难以置信的疏忽,因为现有框架对象上的大多数“助手类型”函数都是静态的:(
Dim test As String
test.MyExtensionMethod("string")