我在这里维护此代码,该代码通常具有以下模式:
StringBuilder result = new StringBuilder();
result.Append("{=" + field.Name + "={");
这样做时似乎浪费了很多无用的对象,我想重写为:
result.Append("{=").Append(field.Name).Append("={");
第一个版本对GC施加更大压力是否正确?还是在C#编译器中使用字符串文字进行了一些优化,其中将字符串与字符串文字连接起来不会创建临时对象?
我同意所有答案,但是对我来说,您需要了解C#中的字符串,并且它们实际上是在“幕后”操作的。
当连接5个或更多字符串时,将使用StringBuilder。这是因为编译器本质上会转换:
string a = b + c + d + e + f;
进入
r = String.Concat(new String[5] { a, b, c, d, e });
因此存在数组创建的隐式开销。
我建议读通过埃里克利珀以下谁在C#写的字符串连接:
http://ericlippert.com/2013/06/17/string-concatenation-behind-the-scenes-part-one/ HTTP:// ericlippert。 com / 2013/06/24 / string-concatenation-behind-the-scenes-part-two /
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句