繁体   English   中英

巨大的弦疯狂

[英]Huge strings insanity

脚本
我有一个包含106091个自定义对象的List 每个对象都有一个字符串属性,该属性可以包含6个字符或9个字符。 几乎100000个对象的字符串属性长度为'9'个字符,其余6091个对象的长度为'6'。 这些字符串被写在字符串变量中:

string IMDVals  = string.Empty;    

      foreach (Var Imd in Obj.Imds)
      {  
         if (i < 50000)
         IMDVals += Imd.ImdValue + ", ";
      }

这将最终绑定到DataGridColumn。

问题
但问题是它在循环中的某些地方失败了,并且我的代码冻结了,而没有陷入catch块中。


1.我怎么能优雅地过来? 那么StringBuilder呢?
2.除此之外,上面的字符串似乎很大,但并不是应该破坏代码! 是不是

您正在以疯狂的速度创建和删除字符串。 垃圾收集很可能是您在这里遇到的最大问题。

您可以通过使用StringBuilderstring.Join来防止过多的垃圾回收,后者在后面使用StringBuilder

string IMDVals = string.Join(",", Obj.Imds);

要么:

StringBuilder sb = new StringBuilder();

bool first = true;
foreach (Var Imd in Obj.Imds)
{  
    if (i < 50000)
    {
       if (first)
       {
           first = false;
       }
       {
           sb.Append(", ");
       }

       sb.Append(Imd.ImdValue);
    }
}

IMDVals = sb.ToString();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM