首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringBuilder确实比连接十几个字符串要慢吗?

StringBuilder确实比连接十几个字符串要慢吗?
EN

Stack Overflow用户
提问于 2017-09-11 08:44:10
回答 1查看 1.3K关注 0票数 3

StringBuilder确实比连接十几个字符串要慢吗?编译器如何优化字符串连接,以便使用"+“连接十几个字符串比StringBuilder更好?

从一本(由本·沃森写的)书中可以看出:

字符串连接:对于已知(编译时)字符串数量的简单连接,只需使用‘+’操作符或String.Concat方法即可。这通常比使用StringBuilder更有效。字符串结果=a+b+c+d+e+ f;除非字符串的数目是可变的,并且可能大于几十个,否则不要考虑StringBuilder。编译器将以一种降低内存开销的方式优化简单的字符串连接。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-11 08:54:17

String.Concat更高效,因为它从一开始就知道所有的字符串长度。因此,它可以分配一个长度刚好合适的单个缓冲区,将字符串复制到其中并返回该缓冲区。

StringBuilder必须分配一个小缓冲区,每次对Append的调用导致空间耗尽时重新分配和复制。对ToString()的最后调用还必须分配另一个缓冲区。

因此,当您预先知道您有多少字符串时使用String.Concat;当您不知道有多少字符串时使用StringBuilder

在C#中,对+操作符的链式调用自动转换为对String.Concat的单个调用。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46151516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档