Possible Duplicate:
What's the best string concatenation method using C#?
你好,
我有一个这样的代码片段,其中从文件中读取大量数据并检查每个位置的某个值并连接一个字符串。
这种字符串连接需要大量的时间和处理能力。有没有一种方法可以减少执行时间?
重要提示:阅读内容文件语法不正确,只需要给出一个想法
string x;
while (var < File.Length)
{
if (File.Content[var] == "A")
{
x += 1;
}
else
{
x += 0;
}
var++;
}
使用StringBuilder
而不是字符串连接。
StringBuilder
对象维护一个缓冲区以容纳新数据的串联。如果有可用空间,新数据将附加到缓冲区的末尾;否则,分配一个新的更大的缓冲区,将原始缓冲区中的数据复制到新缓冲区,然后将新数据附加到新缓冲区。
String
相反是不可变的,每次连接它都会创建一个新对象并丢弃旧对象,这是非常低效的。
此外,如果您知道结果会很大,您可能希望提前为 StringBuilder
设置高容量。这将减少缓冲区重新分配的次数。
你的伪代码看起来像这样:
StringBulder x = new StringBuilder(10000); // adjust capacity to your needs
while (var < File.Length)
{
if(File.Content[var] == "A")
x.Append("1"); // or AppendLine, or AppendFormat
else
x.Append("2");
}