你能够将扩展方法变为静态/共享的吗?

8

好的,我可能在这里误解了一些东西,但就我所看到的而言...

  • 扩展方法必须包含在模块中,而不是类中
  • 您不能使模块中的方法为Static/Shared
  • 因此,如果没有实例化它,您无法在类上使用扩展方法。

换句话说,您不能创建一个名为“ MyExtensionMethod”的字符串扩展方法,并使用:

String.MyExtensionMethod("String")

But instead ..

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

这个正确吗?还是有办法让扩展方法像静态方法一样工作?

1个回答

10

你是正确的。扩展方法只能作用于类型的实例。

而且,不幸的是,没有什么巧妙的方法可以编写扩展方法来作用于类型本身,就像静态方法一样。


1
谢谢你的回答。不过看起来这是一个难以置信的疏忽,因为现有框架对象上的大多数“助手类型”函数都作为静态函数运行 :( - Bob Tway

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接