C# 拼接字符串的几种方式和性能
来源:互联网 发布:如何成为游戏美工 编辑:程序博客网 时间:2024/05/17 03:51
refer http://www.cnblogs.com/cad2/p/4386048.html
C# 拼接字符串的几种方式和性能
开发过程中常用到的拼接字符串的方法有三种:
1 简单 “+=” 拼接法
1
2
3
4
5
string
str=
"a"
;
str+=
"c"
+
"d"
;
string
str_1=
"a"
+
"b"
;
首先需要明白的是string类型,string是引用类型,保留在堆上,而不是栈上,用的时候传的是内存中的地址,每次修改就会重新创建一个新的string对象来存储字符串,原有的会被自动回收。
第一种方式的实现原理,第一步先在内存中分配空间,存储str变量的对象,值为"a", “+=”时,又会重新创建一个对象来存储新的字符串(“abc"),把str指向这个新的地址。所以只有简单几步的拼写时,一般不会有太大问题,如果有时候需要循环拼接时,就会不断创建新的对象,很浪费性能和内存。
2 String.Format()
1
string
str= String.Format(
"{0}{1}{2}"
,
"a"
,
"b"
,
"c"
);
这就需要先看看他的源代码了,
1
2
3
4
5
6
7
public
static
String Format(IFormatProvider provider, String format,
params
Object[] args) <br>{
if
(format ==
null
|| args ==
null
)
throw
new
ArgumentNullException((format==
null
)?
"format"
:
"args"
);
StringBuilder sb =
new
StringBuilder(format.Length + args.Length * 8);
sb.AppendFormat(provider,format,args);
return
sb.ToString();
}
可以看到是先创建一个StringBuilder类型的变量,长度为第一个参数的长度+参数长度的8倍。.Net自动分配一个比较大的容量来存储。StringBuilder的介绍请看第3种方法.
这种方式的代码看起来比较整洁,易于月度,效率也比+=高效很多。
3 StringBuilder.Append
1
2
3
StringBuilder str=
new
StringBuilder();
str.Append(
"a"
);
StringBuilder 是预先创建一个比较大的内存,以后每次操作时判断容量上限是否不够用,如果不够用就自动把容量扩大一倍,修改的还是第一次创建的对象的值。
如果是简单的拼写时,可以用 "+=", string.format
循环内拼写很长的字符串时,就需要用到StringBuilder来节省性能和内存了。
0 0
- C# 拼接字符串的几种方式和性能
- 字符串拼接的几种方式
- 几种字符串拼接方式
- C#截取字符串的几种方式
- C#字符串连接和StringBuilder字符串拼接性能测试
- 字符串拼接方式性能比较
- JAVA的字符串拼接和性能
- C#性能之字符串拼接
- JSON的几种拼接方式
- 几种拼接字符串的效率问题
- 几种拼接字符串的效率问题
- 几种拼接字符串的效率问题 .
- 几种拼接字符串的效率问题 .
- Java 5种字符串拼接方式性能比较。
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较
- Java 5种字符串拼接方式性能比较。 .
- Java 5种字符串拼接方式性能比较。
- 如何设置当程序出现异常后进行重启
- Python 字符串
- ZeroClipboard 使用详细介绍,php 复制剪贴板,flash复制剪贴板插件
- CentOS系统中常用查看日志命令
- java学习【知识点及代码12.1异常】
- C# 拼接字符串的几种方式和性能
- 卷积神经网络学习笔记
- 生活服务行业织梦模板免费下载
- 关于Unity3D动画播放时出现“抽搐”现象的解决方法
- 移动app通知和消息展示测试项详解
- CentOS SSH免密登陆
- HotSpot虚拟机对象探讨
- Java并发:volatile内存可见性和指令重排
- 屏幕内容显示原理