[C#] string 和 StringBuilder 的比较

String Vs StringBuilder

string

  • 名字空间为System
  • 实例不可变(只读)
  • 当值连续变化时,会出现性能降级
  • 线程安全

StringBuilder(可变的string)

  • 所在名字空间为System.Text
  • 实例可变
  • 当对存在的实例进行修改时,显示出更好的性能

下面的例子,将创建2001个字符串,而其中的2000个都将被舍弃。

string s = string.Empty;
for (i = 0; i < 1000; i++) {
  s += i.ToString() + " ";
}

而改成使用StringBuilder就能减少频繁的内存分配,从而改善性能:

StringBuilder sb = new StringBuilder();
for (i = 0; i < 1000; i++) {
  sb.Append(i);
  sb.Append(' ');
}

简而言之,string对象不可变,对字符串的操作都将在内存中产生副本,从而影响性能,StringBuilder相反,至于线程安全,不清楚使用场景,应该是字符串变量如果不重新赋值,可以保证内容不会被中途改变。


[1] https://stackoverflow.com/questions/3069416/difference-between-string-and-stringbuilder-in-c-sharp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值