我想问一下,为了重用StringBuilder,您认为清除内容的最佳方式(持续时间较短/消耗较少的资源)是什么?想象一下下面的场景:
StringBuilder sb = new StringBuilder();
foreach(var whatever in whateverlist)
{
sb.Append("{0}", whatever);
}
//Perform some stuff with sb
//Clear stringbuilder here
//Populate stringbuilder again to perform more actions
foreach(var whatever2 in whateverlist2)
{
sb.Append("{0}", whatever2);
}
在清除StringBuilder时,我可以想到两种可能性:
sb = new StringBuilder();
或
sb.Length = 0;
清除它的最好方法是什么?为什么?
谢谢。
编辑:使用当前的.NET 3.5版本。
发布于 2009-11-11 00:58:40
在.NET 4.0中,您可以调用sb.Clear()
,但在旧版本中,您应该设置sb.Length = 0
。
.NET 4.0中添加了Clear()
方法。
发布于 2009-11-11 00:58:13
创建新的StringBuilder。旧的维护与其相关的资源(例如,最大长度的缓冲区),这些资源最好被垃圾回收。
发布于 2009-11-11 00:59:24
我认为你过早地进行了优化。
我敢打赌,做sb.Length=0;
是避免创建另一个对象并将另一个对象放在一边等待GC最终收集的最快方法。
我认为创建一个新的StringBuilder是解决内存问题的最好办法。而设置sb.Length
将是解决速度问题的最佳选择。
https://stackoverflow.com/questions/1709471
复制相似问题