c# - StringBuilder 中的 system.outofmemoryexception

标签 c# stringbuilder

我有以下代码:

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
    for (int j = 0; j < ds.Tables[0].Columns.Count; j++)
    {
        strCsv.Append( XC.CleanForCsv(ds.Tables[0].Rows[i][j].ToString()) + ",");
    }

    strCsv.Append( "\r\n" + strCsv)
}

Dataset包含 8000 条记录。使用 for 遍历记录仅在 15 条记录后循环 strCsv.Append( "\r\n" + strCsv)语句抛出异常说 System.OutOfMemoryException .这个异常背后的原因是什么?

最佳答案

看看这个:

strCsv.Append( "\r\n" + strCsv)

您在每次迭代 上将输出加倍。这会非常快速地积累起来——同时也会给你错误的结果。

我想你只是想:

strCsv.Append("\r\n");

关于c# - StringBuilder 中的 system.outofmemoryexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17940587/

相关文章:

java - 在 Java 中为 HashSet 构建字符串 - 无法正确循环大字符串

c# - 获得类型推断的聪明方法?

c# - 如何从 C# 中的 plpgsql 函数返回 refcursor?

c# - DllImport 中的编码(marshal)处理、StringBuilder 和字符指针

java - 如何使我的字符串生成器标签 ID、名称、地址加粗

java - StringBuilder.insert()

c# - 如何使用 "KeepRevisionForever"属性保留所有文件版本

c# - 带有路径和完整程序集名称的 Assembly.LoadFrom

C# 从 In-Sight Explorer (Cognex) 中提取细胞信息

java - 为什么在 1.5 之前的 java 版本中用 StringBuilder 替换 StringBuffer 对象是不安全的