可以在.net中扩展String类

eba*_*lga 6 .net c#

如何覆盖或扩展.net主类.例如

public class String
{
    public boolean contains(string str,boolean IgnoreCase){...}
    public string replace(string str,string str2,boolean IgnoreCase){...}
}
Run Code Online (Sandbox Code Playgroud)

string aa="this is a Sample";
if(aa.contains("sample",false))
{...}
Run Code Online (Sandbox Code Playgroud)

可能吗?

Jar*_*Par 22

String类是密封的,因此您无法从中继承.扩展方法是您最好的选择.它们与实例方法具有相同的感觉,而没有继承成本.

public static class Extensions {
  public static bool contains(this string source, bool ignoreCase) {... }
}

void Example {
  string str = "aoeeuAOEU";
  if ( str.contains("a", true) ) { ... }
}
Run Code Online (Sandbox Code Playgroud)

您需要使用VS 2008才能使用扩展方法.

  • @casperOne - 把它转回给你,"或者单声道2.0";-p (3认同)
  • @casperOne,对.我经常说VS 2008,因为它更为人所知.更有趣的是,如果您提供自己的Extension属性,则可以使用扩展方法编译2.0应用程序.http://blogs.msdn.com/jaredpar/archive/2007/11/16/extension-methods-without-3-5-framework.aspx (2认同)