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

时间:2014-01-10 10:40:39

标签: c# string function class methods

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

originalString.TrimStart().TrimEnd().Replace("Hello","Hi")

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

如果你能给我一个例子来创建这样的课程,我将不胜感激。

谢谢,

6 个答案:

答案 0 :(得分:6)

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

非常重要的是要注意字符串是不可变的,所以要求例如字符串上的Trim不会改变它。

public string Trim()
{
  return this.TrimHelper(2);
}

这就是Trim的样子,没有神奇的简单方法。

如果你的类不是不可变的最好的方法是为你的类创建扩展方法。您可以阅读有关扩展方法here的更多信息。

使用常规方法的示例

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

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

    public Test DoOtherStuff()
    {
       return new Test();
    }
}

并使用它:

var test = new Test();
test.DoStuff().DoOtherStuff();

答案 1 :(得分:6)

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

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

有时这称为Fluent interfacemethod chaining

答案 2 :(得分:1)

所有上述方法都返回字符串。所以这只是一种类型问题。

你可以像这样创建自己的类 -

课程定义

public class FooString
    {

        public FooString Test1()
        {
            return this;
        }

        public FooString Test2()
        {
            return this;
        }

        public FooString Test3(string someString)
        {
            return this;
        }

    }

方法调用

FooString test = new FooString();
test.Test1().Test2().Test3("Some string");

答案 3 :(得分:1)

您所看到的主要内容称为Method Chaining(或者也是一个流畅的界面)。

它的工作原理是因为该方法返回与其包含类型相同的类型(即TrimStart是String类的函数,并且还返回String)。但是,这不仅限于字符串。

我能想到的最好的现代例子之一是jQuery(维基百科文章中提到过)。

答案 4 :(得分:0)

很简单。 String是一个不可变类。这意味着您在其上执行的每个操作都会转换其值,并且需要返回一个新的不同的String实例(因为当前的操作无法更改)。您可以在其上调用另一个操作等等......

string newString = originalString.Replace("Hello","Hi") // new instance
int length = newString.Length // a simple property.

答案 5 :(得分:0)

只需返回每个操作的结果,如果结果是相同的类型,那么你可以调用结果的方法,然后调用结果的方法等。

public class A
{
    public A SomeMethod();
    ...
}

A.SomeMethod().SomeMethod()...