静态扩展方法
可能重复:
我可以将扩展方法添加到现有的静态类吗?
有没有什么办法可以将静态扩展方法添加到类中。
特别是我想重载Boolean.Parse允许一个int参数。
总之,不,你不能。
长答案,扩展方法只是语法糖。 IE:
如果你有一个string的扩展方法让我们说:
public static string SomeStringExtension(this string s) { //whatever.. }
当你接着说:
myString.SomeStringExtension();
编译器只是把它变成:
ExtensionClass.SomeStringExtension(myString);
正如你所看到的,静态方法没有办法做到这一点。
还有一件事情就是在我身上发现:真正能够在现有类上添加静态方法的是什么? 你可以有自己的辅助class,做同样的事情,所以能够做什么才是真正的好处:
Bool.Parse(..)
与
Helper.ParseBool(..);
真的没有太多的表…
特别是我想重载Boolean.Parse允许一个int参数。
int的扩展会工作吗?
public static bool ToBoolean(this int source){ //do it //return it }
那么你可以这样调用它:
int x = 1; bool y=x.ToBoolean();
它看起来不像你可以。 看到这里的讨论
我非常想被certificate是错误的。
您可以将扩展方法添加到int
public static class IntExtensions { public static bool Parse(this int value) { if (value == 0) { return true; } else { return false; } } public static bool? Parse2(this int value) { if (value == 0) { return true; } if (value == 1) { return false; } return null; } }
像这样使用
bool bool1 = 0.Parse(); bool bool2 = 1.Parse(); bool? bool3 = 0.Parse2(); bool? bool4 = 1.Parse2(); bool? bool5 = 3.Parse2();
不,但你可以有这样的东西:
bool b; b = b.YourExtensionMethod();