StringBuilder和'+'运算符

服务劳里森

我在这里维护此代码,该代码通常具有以下模式:

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

[]运算符和多重继承的歧义

来自分类Dev

逗号运算符和乱序执行

来自分类Dev

==和eq运算符

来自分类Dev

重载new和delete运算符

来自分类Dev

C ++串联和分层运算符

来自分类Dev

逻辑AND(&&)和OR(||)运算符

来自分类Dev

Java运算符`+`和`StringBuilder.append`

来自分类Dev

重载++和+运算符

来自分类Dev

大查询-和/或运算符

来自分类Dev

比较SIFT运算符和MOPS运算符

来自分类Dev

IfElse和OR运算符

来自分类Dev

Java,运算符重载和String的“ +”运算符

来自分类Dev

$ geoWithin和$ geoIntersects运算符的区别?

来自分类Dev

%=和| =查询运算符,Ext JS

来自分类Dev

组合问题:运算符'=='和运算符'-'

来自分类Dev

实现|| =和&& =运算符:没有匹配运算符声明的运算符实现

来自分类Dev

sqflite IN运算符和AND运算符

来自分类Dev

Haskell美元运算符和中缀运算符

来自分类Dev

位运算符比+和-运算符快吗

来自分类Dev

使用or和not运算符

来自分类Dev

+ =运算符和新的运算符c#

来自分类Dev

逻辑AND(&&)和OR(||)运算符

来自分类Dev

java运算符+和StringBuilder.append

来自分类Dev

C ++运算符“ <”和“>”

来自分类Dev

C运算符的优势:增量运算符和逻辑运算符

来自分类Dev

和运算符和半冒号

来自分类Dev

逻辑运算符和增量运算符

来自分类Dev

AnsiString 和 += 运算符

来自分类Dev

运算符 = 和 != 同时