[英]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.除此之外,上面的字符串似乎很大,但并不是应该破坏代码! 是不是
您正在以疯狂的速度创建和删除字符串。 垃圾收集很可能是您在这里遇到的最大问题。
您可以通过使用StringBuilder
或string.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.