首页 > 解决方案 > C#将新文本添加到字符串而不复制它以前的值

问题描述

例如,我有需要与另一个字符串组合的字符串

string string1 = "cars"; // the text is just for example 
string string2 = "white";
// then
string string1 = string1 + string2;
// or
string string1 += string2;

好吧,乍一看没问题吧?NOPE,确实有问题

string.length/ 字符串包含很多字符时,例如当它包含 100.000 个单词时,当我将它放在循环中时它开始变得迟钝或冻结,因为它需要从另一个字符串中复制 100.000 个单词加单词,每次它组合 string1与 string2 。

是否有任何替代方法可以将新文本添加到包含大量单词的字符串中?

标签: c#string

解决方案


在 c# 中累积字符串的正确方法是使用StringBuilder. 例子:

StringBuilder sb = new StringBuilder();
sb.Append("...");
sb.Append("...");
....
var result = sb.ToString()

您的解决方案似乎滞后,因为每次您“修改”一个字符串时都会创建一个全新的字符串,所以垃圾收集器有点疯狂......


推荐阅读