我需要在循环中提取许多巨大的StringBuilders(每个数据约1mb)的第一行。为此,我考虑过这样做:

string header;
foreach(StringBuilder strBuilder in bigArray)
    header= strBuilder.ToString().SubString(blabla);


但是我担心.ToString()方法可能需要太长时间才能执行。您对我如何有效地做到这一点有任何想法吗?

最佳答案

如果您正在寻找一个不能从Substring提取整个字符串的StringBuilder替代方案,则可以使用采用ToStringstartoverload of length

string header;
foreach(StringBuilder strBuilder in bigArray)
{
    header= strBuilder.ToString(start, length);
}


它更快吗?我不知道-您必须对其进行测量才能确定。

另一种选择是将“行”存储为字符串数组(或List<List<string>>)的集合,而不是StringBuilder的集合。

关于c# - StringBuilder ToString()性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22716327/

10-13 06:45