C# net字符串类是如何工作的
使用string类,我们可以像这样一个接一个地调用方法:C# net字符串类是如何工作的,c#,string,function,class,methods,C#,String,Function,Class,Methods,使用string类,我们可以像这样一个接一个地调用方法: originalString.TrimStart().TrimEnd().Replace("Hello","Hi") 我想知道它是怎么工作的?以及这种操作在.net framework中的调用 如果你能给我一个创建这样一个类的例子,我将不胜感激 谢谢,此方法中的每一个都返回新字符串,因此基本上这是在字符串返回字符串时调用的方法。您可以创建自己的类,创建方法并像这样运行它 非常重要的是要注意字符串是不可变的,所以调用例如Trim on s
originalString.TrimStart().TrimEnd().Replace("Hello","Hi")
我想知道它是怎么工作的?以及这种操作在.net framework中的调用
如果你能给我一个创建这样一个类的例子,我将不胜感激
谢谢,此方法中的每一个都返回新字符串,因此基本上这是在字符串返回字符串时调用的方法。您可以创建自己的类,创建方法并像这样运行它 非常重要的是要注意字符串是不可变的,所以调用例如Trim on string不会改变它
public string Trim()
{
return this.TrimHelper(2);
}
这就是修剪看起来的样子,没有魔法,只是简单的方法
若你们的类不是不可变的,最好的方法就是为你们的类创建扩展方法。您可以阅读更多关于扩展方法的信息
使用常规方法的示例
并使用它:
var test = new Test();
test.DoStuff().DoOtherStuff();
很简单。String是一个不可变的类。这意味着,您对其执行的每个转换其值的操作都需要返回一个新的、不同的String实例,因为当前实例无法更改。你可以调用另一个操作等等
string newString = originalString.Replace("Hello","Hi") // new instance
int length = newString.Length // a simple property.
这没什么特别的。string类的许多方法都返回字符串,因此您可以对返回的值调用其他方法 例如,TrimStart返回一个新字符串,其中空格在开始时已被删除。然后在返回的字符串上调用TrimEnd
有时这被称为or。所有上述方法都返回字符串。所以这只是一个典型的问题 您可以像这样创建自己的类- 类定义 方法调用
你所看到的东西背后的原理是调用或是一个流畅的接口 它之所以有效,是因为该方法返回的类型与其包含的类型相同,即TrimStart是String类上的一个函数,并且还返回一个字符串。然而,这并不限于字符串
我能想到的最好的现代例子之一是维基百科文章中提到的jQuery。只需在每次操作中返回结果,如果结果类型相同,则可以调用result方法,然后调用result方法,等等
public class A
{
public A SomeMethod();
...
}
A.SomeMethod().SomeMethod()...
除了这些不是扩展方法外,它们只是返回一个新字符串@Moo Juice扩展方法可以返回新字符串!扩展方法确实不需要更改值!但是OP给出的示例是string类的成员,而不是扩展方法:@好的,我的错误,纠正了。感谢您注意到,OP正在询问如何创建这样的东西,所以扩展方法将是一个不错的选择。这不一定与不变性有关。您可以在可变类上编写方法链接方法,也可以在不使用方法链接方法的情况下编写不可变类。@Rawling您不能在没有方法链接的情况下编写更改值的不可变类。那是绳子。
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");
public class A
{
public A SomeMethod();
...
}
A.SomeMethod().SomeMethod()...