字符串.Join抛出OutOfMemory异常

本文关键字:异常 OutOfMemory 抛出 Join 字符串 | 更新日期: 2023-09-27 18:17:12

我有一个字符串列表,我想在它们之间用" "(空格)连接它们,所以我使用字符串。连接方法:

foreach (var line in lines)
{        
    var strings = lines.Where(l => l.Code == line.Code).Select(l => l.Data);
    var original = string.Join(" ", strings);        
}

数据看起来像这样:"123456789,987654321,32132,7873892…"

但是我得到一个OutOfMemoryException。为什么?每个字符串大约有100-150个字符,列表中有5-10个字符串。

有比字符串。join更好的方法吗?

字符串.Join抛出OutOfMemory异常

试试这个(如果你得到同样的错误,请告诉我们):

lines.GroupBy(l => l.Code).Select(l => string.Join(" ", l.Select (x => x.Data)));
foreach (var line in lines.GroupBy(p=>p.Code))
{        
    var original = string.Join(" ", line.Select(p=>p.Data));        
}

StringBuild()类可以连接字符串,并且不是不可变的。

这是一篇MSDN文章,讨论不可变字符串与StringBuilder如何工作。http://msdn.microsoft.com/en-us/library/2839d5h5 (v = vs.71) . aspx