C#String类:无法将字符推送到字符串的末尾?

Fai*_*101 0 c# string optimization

真???

我搜索了https://msdn.microsoft.com/en-us/library/system.string(v=vs.110).aspx,并没有看到任何方法可以直接将一个字符推到最后一个字符串.我能想到的最好的是

mystr.Insert(mystr.Length, newchar.ToString()); 
Run Code Online (Sandbox Code Playgroud)

由于将字符转换为字符串并执行字符串连接所涉及的开销,这似乎是无效的.我的特定用例看起来像

while (eqtn[curidx] >= '0' && eqtn[curidx] <= '9') istr.Insert(istr.Length, eqtn[curidx++].ToString());
Run Code Online (Sandbox Code Playgroud)

只因为我想不出更好的办法.有没有更好的办法?

Jak*_*rtz 5

.NET中的字符串是不可变的,因此您的代码不会执行任何操作.a上的每个方法都String创建一个新实例,它不会修改现有的字符串.

Stringclass重写+operator以创建一个新字符串,并将字符附加到结尾:

istr = istr + eqtn[curidx++];
Run Code Online (Sandbox Code Playgroud)

如果你正在做很多这样的操作,那么使用它会更有效率StringBuilder.它基本上是一个可变的String.

您可以使用Append方法将char添加到end.准备好后,调用ToString以获取构造的字符串.