创建适用于String对象的方法

时间:2011-09-26 07:32:50

标签: c# inheritance

我想创建一个适用于String对象的方法,该方法将返回修改后的String

String s = "blabla";
String result = s.MyNewMethod();

我尝试创建新的课程String,但关键字this似乎未知:

class String  {

    public String MyNewMethod() {
        String s = this.Replace(',', '.'); // Replace method is unknown here
        // ...
    }
}

2 个答案:

答案 0 :(得分:8)

您需要定义extension method

public static class StringExtensions {
    public static string MyNewMethod(this string s) {
        // do something and return a string
    }
}

请注意,扩展方法为static,并在static顶级类中定义。

答案 1 :(得分:1)

我认为这需要更多解释。

  1. String是.NET中的密封类,与大多数OO类型安全语言一样。这意味着你不能将字符串子类化。以下是关于字符串的一些很好的信息:http://www.yoda.arachsys.com/csharp/strings.html。为什么他们不能被分类。

  2. 要在.net中创建子类,必须使用以下语法:

    // here "Test is a subclass of Test2"
    public class Test : Test2 {
    
    }
    
  3. Jason提到的扩展方法非常适合为密封类添加功能。扩展方法永远不能覆盖类中已存在的函数。在编译时,它们的优先级低于实例方法。由于扩展方法不在类中,因此无法访问内部和私有字段。