如何扩展String类?

时间:2013-08-22 04:24:15

标签: c# extending-classes

在javascript中扩展核心类很容易。我觉得它在C#中并不那么容易。我想在String类中添加一些内容,以便我可以执行以下操作:

string s = "the cat's mat sat";
string sql = s.smartsingleQuote();

因此给了我

the cat''s mat sat

这是否可行,或者我是否必须为此编写函数?

3 个答案:

答案 0 :(得分:12)

是的,可以使用扩展方法 - MSDN

以下是示例代码。

public static class Extns
{
    public static string smartsingleQuote(this string s)
    {
        return s.Replace("'","''");
    }
}

免责声明:未经测试。

答案 1 :(得分:3)

你无法完全按照string class is sealed

完成你所说的内容

您可以通过创建extension method

来实现这一美学
public static class StringExtensions
{
  public static string SmartSingleQuote(this string str)
  {
    //Do stuff here
  }
}

参数中的this关键字允许您获取该参数并将其放在方法名称前面,以便像您在问题中所要求的那样更容易地进行链接。然而,这相当于:

StringExtensions.SmartSingleQuote(s);

这取决于你的偏好:)

Here is a good SO answer on extension methods

答案 2 :(得分:3)

是的,您可以使用extension method执行此操作。它看起来像那样:

public static class NameDoesNotMatter {
   public static string smartSingleQuote(this string s) {
      string result = s.Replace("'","''");
      return result;
   } 
}

魔术是第一个参数前面的关键词“this”。然后你可以编写你的代码,它将起作用:

string s = "the cat's mat sat";
string sql = s.smartsingleQuote();