C# String 字符拼接测试(“+”、string.Format、StringBuilder 比较)

本文探讨了C#中字符串拼接的三种常见方式:+ string.Format和StringBuilder的性能差异。通过测试发现,对于少量拼接,+操作符效率较高,但连续拼接时性能下降明显。StringBuilder在频繁拼接时表现最佳,因为它避免了多次内存分配。string.Format的效率通常低于StringBuilder。在知道预估长度的情况下,一次性分配内存的StringBuilder能提供更好的性能。

博客园
首页
新随笔
联系
订阅
管理
C# String 字符拼接测试(“+”、string.Format、StringBuilder 比较)
对于字符串的拼接自己一直有疑问,在何时该用什么方法来拼接?哪种方法更好、更适合。

几种方法

1、“+” 拼接字符串

现在在 C# 中,字符串进行拼接,可以直接用 “+” 而且可以直接用于数字类型的而不必转换(整形、浮点等都可以)

string a = “1”;

a = a + “1”;

string b = “2” + 1.2345;
对于使用多个 “+” 的,编译器会优化为:

string a = “a” + 1 + “b” + 2 + “c” + 3 + “d” + 4;
string a = string.Concat(new string[]{});
通过分析string.Concat(params string[] values)的实现可以知道:先计算目标字符串的长度,然后申请相应的空间,最后逐一复制,时间复杂度为o(n),常数为1。

固定数量的字符串连接效率最高的是+。

但是字符串的连+不要拆成多条语句,比如:

复制代码
string a = “a”;
a += 1;
a += “b”;
a += 2;
a += “c”;
a += 3;
复制代码
这样的代码,不会被优化为string.Concat,就变成了性能杀手,因为第i个字符串需要复制n-i次,时间复杂度就成了o(n^2)。

那么用 “+” 拼接字符串也是要正确运用。

2、string.Format 拼接字符串

该形式可以同时拼接多个字符串

string.Format("{0}{1}{2}{3}",“a”,“b”,“c”,“d”);
它的底层是 StringBuilder,在此基础进行了多层的封装,说是效率和 StringBuilder 差不多,这个不清楚,可以看下面的实验;</

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值