问题:
在性能方面,哪种方式更好:清空字符串构建器?
AStringBuilder.Remove(0,AStringBuilder.Length);
string theString = AStringBuilder.ToString();
ABuilder.Replace(theString,String.Empty);
AStringBuilder.Length = 0;
注意:我使用的是3.5版框架,其中不包含Clear()
方法。
问题:
在性能方面,哪种方式更好:清空字符串构建器?
AStringBuilder.Remove(0,AStringBuilder.Length);
string theString = AStringBuilder.ToString();
ABuilder.Replace(theString,String.Empty);
AStringBuilder.Length = 0;
注意:我使用的是3.5版框架,其中不包含Clear()
方法。
Clear
是在 .net 4 中添加的。因此,您应该使用 Length = 0
。实际上,我可能会添加一个扩展方法命名为 Clear
,因为在我看来,这比 Length = 0
更易读。
我不会使用以上任何一种方法,而是调用 Clear
。
Clear
是一个方便的方法,它等同于将当前实例的 Length 属性设置为 0(零)。
我无法想象它比您的任何变体都要慢,也无法想象清除 StringBuilder
实例会成为瓶颈。如果有任何瓶颈,那就是在追加代码中。
如果清除对象的性能真的是瓶颈,那么您需要计时您的代码以了解哪个变体更快。当考虑性能时,没有真正的替代基准测试。
Length = 0
。这就是 Clear
所做的全部。 - vcsjones在 .NET 4 之前:
如 David Heffernan 所提到的,使用 Length = 0;
在 .NET 4 中:
另一个选项:StringBuilder.Clear();
http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.clear.aspx
Clear()
有什么问题? - V4Vendetta