gpt4 book ai didi

c# - StringBuilder 和 '+' 运算符

转载 作者:太空狗 更新时间:2023-10-29 21:27:43 26 4
gpt4 key购买 nike

我在这里维护这个代码,它通常具有如下模式:

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 });

因此存在数组创建的隐式开销。

我建议阅读 Eric Lippert 在 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/

关于c# - StringBuilder 和 '+' 运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com