静态扩展方法

有没有什么方法可以将静态扩展方法添加到类中。

具体来说,我想重载 Boolean.Parse以允许 int参数。

133496 次浏览

简而言之,不,你不能。

长话短说,扩展方法只是句法糖:

如果你有一个关于 string 的扩展方法,比如说:

public static string SomeStringExtension(this string s)
{
//whatever..
}

当你说:

myString.SomeStringExtension();

编译器只是把它变成:

ExtensionClass.SomeStringExtension(myString);

因此,正如您所看到的,对于静态方法没有办法这样做。

另一件事刚刚让我明白了: 能够在现有类上添加静态方法的 到底是什么?你可以有自己的 helper 类来做同样的事情,那么这样做的好处是什么呢:

Bool.Parse(..)

对。

Helper.ParseBool(..);

没什么好谈的。

不,但是你可以有这样的东西:

bool b;
b = b.YourExtensionMethod();

具体来说,我想重载 Boolean.Parse以允许一个 int 参数。

Int 的扩展是否有效?

public static bool ToBoolean(this int source){
// do it
// return it
}

然后你可以这样称呼它:

int x = 1;


bool y = x.ToBoolean();