初学者课程:字符串连接
连接:这是什么?
连接就是把某些东西串在一起,在编程中,我们连接单词、字符串,如下所示:
string maValeur = "我的值 1";
maValeur = maValeur + ", 我的值 2";
maValeur = maValeur + ", 我的值 3";
//这将产生:
//我的值 1,我的值 2,我的值 3
所以当我们只有一个很小的连接时,这很好,但当我们做一个循环时,如下所示:
string maValeur = null;
//一个100,000次连接的循环
for(int i=0; i < 100000; i++)
{
maValeur = maValeur + ",我的值 " + i;
}
20秒和768毫秒!(00:20.768) 应该避免! 性能完全不理想!
为什么?
使用这种字符串连接时,每次都为每个添加的字符串分配内存空间,而且如果您想修改或操作这个变量,性能真的很差!微软知道这一点,因此发明了StringBuilder!字符串和构建器用于构建字符串。
StringBuilder
StringBuilder对象使用起来非常简单:
StringBuilder maValeur = new StringBuilder();
//一个100,000次连接的循环
for(int i=0; i < 1000000; i++)
{
maValeur.Append("我的值 ").Append(i).Append(",");
}
而且啪!6毫秒!(00:00.006)
正如您所注意到的,StringBuilder对象做同样的事情,但速度快1000倍,并且不会占用太多内存!只需使用Append方法即可。
此外,StringBuilder允许您根据需要操作字符串:
| 方法 | 描述 |
|---|---|
| StringBuilder.Append | 将一个字符串元素连接到StringBuilder中已有值的末尾 |
| StringBuilder.AppendFormat | 将一个字符串元素连接到StringBuilder中已有值的末尾,并可以使用索引 {x} 进行格式化 |
| StringBuilder.Insert(start, "值") | 在StringBuilder中已有值的特定位置添加一个字符串元素 |
| StringBuilder.Remove(start, 长度) | 从StringBuilder中已有值的特定位置开始,移除一定长度的字符。 |
AppendFormat
您可以像使用string.Format()一样使用StringBuilder,如下所示:
StringBuilder maValeur = new StringBuilder();
int maLigne = 1000;
for(int i=0; i < 1000; i++)
{
maValeur.AppendFormat("我的值 {0} 是第 {1} 行的值,", i, maLigne);
maLigne++;
}
您传递给索引0 -> i 和索引1 -> maLigne
插入
要精确地在StringBuilder中插入另一个字符串,简单得很:
StringBuilder maValeur = new StringBuilder();
maValeur.Append("我的狗在花园里散步。");
maValeur.Insert(10,"和我的猫 ");
maValeur.Insert(33,"nt");
//结果:我的狗和我的猫在花园里散步。
移除
要移除字符,同样简单:
StringBuilder maValeur = new StringBuilder();
maValeur.Append("我的狗在花园里散步。");
maValeur.Insert(10,"和我的猫 ");
maValeur.Insert(33,"nt");
maValeur.Remove(35, 15);
//结果:我的狗和我的猫散步。
养成使用StringBuilder而不是字符串连接的习惯,您会在性能上获益,相信我!
此外,这也得到了查克·诺里斯的认可:

Aucun commentaire pour le moment.