.net字符串类是如何工作的

cyr*_*s-d -1 c# string methods class function

使用字符串类,我们能够像这样一个接一个地调用方法:

originalString.TrimStart().TrimEnd().Replace("Hello","Hi")
Run Code Online (Sandbox Code Playgroud)

我想知道它是如何工作的?这种操作在.net框架中调用了什么.

如果你能给我一个例子来创建一个像这样的类,我将不胜感激.

谢谢,

Kam*_*ski 6

每个方法都返回一个新字符串,所以基本上这是在字符串返回字符串上调用的方法.您可以创建自己的类,创建方法并像这样运行它.

非常重要的是要注意字符串是不可变的,因此调用例如Trim字符串不会改变它.

public string Trim()
{
  return this.TrimHelper(2);
}
Run Code Online (Sandbox Code Playgroud)

这是怎么Trim样的,没有魔法只是简单的方法.

如果你的类不是不可变的最好的方法是为你的类创建扩展方法.您可以在此处详细了解扩展方法.

使用常规方法的示例

public class Test
{
    public int Prop {get;set;}

    public Test DoStuf()
    {
        Prop=1;
        return this;
    }

    public Test DoOtherStuff()
    {
       return new Test();
    }
}
Run Code Online (Sandbox Code Playgroud)

并使用它:

var test = new Test();
test.DoStuff().DoOtherStuff();
Run Code Online (Sandbox Code Playgroud)

  • 除了这些不是扩展方法,它们只是返回一个新的字符串! (4认同)

Dir*_*irk 6

这没什么特别的.string该类的许多方法都返回一个字符串,因此您可以在返回的值上调用其他方法.

例如,TrimStart()返回一个新字符串,其中空格在开始时被剥离.然后你调用TrimEnd()返回的字符串.

有时这被称为Fluent接口方法链接.