Mid*_*hat 157 c# extension-methods
可能重复:
我可以向现有静态类添加扩展方法吗?
有什么办法可以为类添加静态扩展方法.
特别是我想重载Boolean.Parse以允许int参数.
BFr*_*ree 148
总之,不,你不能.
答案很长,扩展方法只是语法糖.IE:
如果你对字符串有一个扩展方法,那就说:
public static string SomeStringExtension(this string s)
{
//whatever..
}
Run Code Online (Sandbox Code Playgroud)
然后你打电话给它:
myString.SomeStringExtension();
Run Code Online (Sandbox Code Playgroud)
编译器只是把它变成:
ExtensionClass.SomeStringExtension(myString);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,静态方法无法做到这一点.
还有一件事让我意识到:能够在现有类上添加静态方法真正意义何在?您可以拥有自己的帮助程序类来执行相同的操作,因此能够执行以下操作的真正好处是:
Bool.Parse(..)
Run Code Online (Sandbox Code Playgroud)
与
Helper.ParseBool(..);
Run Code Online (Sandbox Code Playgroud)
真的没有带来太多的东西......
bsn*_*eze 76
特别是我想重载Boolean.Parse以允许int参数.
int的扩展是否有效?
public static bool ToBoolean(this int source){
//do it
//return it
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样调用它:
int x = 1;
bool y=x.ToBoolean();
Run Code Online (Sandbox Code Playgroud)