静态扩展方法

可能重复:
我可以将扩展方法添加到现有的静态类吗?

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

特别是我想重载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();