你第一个物流网站建设方案,做网站公司青浦,公司网站建设说明书,重庆整站优化的电话销售String问题#xff1a;当程序中进行过多字符串处理操作时#xff0c;会在内存中产生过多垃圾信息#xff0c;影响程序效率。
StringBuilder简介
StringBuilder为一个类#xff0c;属于引用类型。StringBuilder与string的区别在于#xff0c;StringBuilder对于字符串的操…String问题当程序中进行过多字符串处理操作时会在内存中产生过多垃圾信息影响程序效率。
StringBuilder简介
StringBuilder为一个类属于引用类型。StringBuilder与string的区别在于StringBuilder对于字符串的操作总是在同一内存空间实现不会产生垃圾数据执行效率更高。
使用方法
一、创建对象
下面使用变量sb进行演示
StringBuilder sbnew StringBuilder(); //创建StringBuilder变量sb
注意使用StringBuilder需要依赖System.Text命名空间。
二、向sb追加数据
此时会需要两个函数
sb.Append(i)向sb中追加数据sb.ToString()将sb转换为字符串。
使用上面的sb对其进行操作
//向sb中追加数据
sb.Append(StringBuilder);
sb.Append(1234);
sb.Append(false);
sb.Append(1.23);
for (int i 0; i 5; i) sb.Append(i); //使用循环追加数据
//将sb转换为字符串后输出
Console.WriteLine(输出sb.ToString()); //输出StringBuilder1234False1.2301234
可见追加数据即将对应数据以类似字符串形式添加在原有数据之后。实际Append有多种重载可以添加很多数据类型。
借助于ToString即可将sb以字符串形式输出。
三、清空sb
清空sb使用函数Clear。
//清空sb
sb.Clear();
Console.WriteLine(此时无sb输出 sb.ToString()); //此时无sb输出
四、插入数据
使用Insert方法可以向sb中选定位置插入数据。假设上面sb未被清空
//插入数据
sb.Insert(6, Insert); //在索引值为6的字符前插入字符串Insert
Console.WriteLine(插入后sb输出 sb.ToString());
//插入后sb输出StringInsertBuilder1234False1.2301234 五、删除子字符串
通过Remove方法可以将选定索引之后的一定长度子字符串删除。
//删除子字符串
sb.Remove(6, 6); //从索引值为6的字符开始删除6字符长度的子字符串
sb.Remove(13,18);
//两参数必须完整不能认为只填写前一个参数即可清空选定位置后全部字符串
Console.WriteLine(输出 sb.ToString()); //输出StringBuilder
测试效率
测试效率可以通过程序执行时间参考。程序执行时间测量需要使用Stopwatch类该类型依赖于System.Diagnostics命名空间。
使用Stopwatch类一般通过如下操作测量时间
Stopwatch sw new Stopwatch()可创建Stopwatch类变量sw.Start()开始计时sw.Stop()结束计时sw.Elapsed表示开始到结束的时长输出格式为“时:分:秒.小数后7位”。
现在尝试分别向string与StringBuilder类追加5万条字符串测量代码实例
//创建Stopwatch变量
Stopwatch sw1 new Stopwatch();
Stopwatch sw2 new Stopwatch();//string类测试追加效率
string s ;
sw1.Start();
for(int i 0; i 50000; i)
{s addString;
}
sw1.Stop();
Console.WriteLine(string类追加5万字符串用时为 sw1.Elapsed);//StringBuilder类测试追加效率
StringBuilder sb new StringBuilder();
sw2.Start();
for (int i 0; i 50000; i)
{sb.Append(addString);
}
sw2.Stop();
Console.WriteLine(StringBuilder类追加5万字符串用时为 sw2.Elapsed);
观察输出结果 string类追加5万字符串用时为00:00:05.3519927 StringBuilder类追加5万字符串用时为00:00:00.0007908 对比可见StringBuilder类效率远超string类。
本段代码实际也是一段程序效率测试的实例在程序效率测试方面也可以进行参考。