StringBuilder 简介
- 字符串的缺点
- 对一个字符串变量重复赋值时,在内存中会产生大量的垃圾数据信息。
- 当重复赋值频率很高时,执行效率会降低。
- StringBuilder 简介
- String:字符串;Builder:构建器。 “字符串构建器”。
- StringBuilder 是一个类,其类型的变量是引用类型。
- StringBuilder 类型的 “字符串变量” ,一直操作同一块内存空间,不会产生垃圾数据,且执行效率远高于 string类型的字符串变量。
StringBuilder 使用方法
- 创建 StringBuilder 类型的变量
- StringBuilder sb = new StringBuilder(); //创建一个对象。
- 注意:StringBuilder 依赖 System.Text 命名空间。
- 往 sb 中追加数据
- sb.Append(i); //追加数据。
- sb.ToString(); //将 sb 转换成字符串形式。
StringBuilder sb = new StringBuilder(); //单个追加数据. sb.Append("Shane"); sb.Append(102030); sb.Append(true); //使用for循环追加数据. for (int i = 0; i <= 100; i++) { sb.Append(i); } Console.WriteLine(sb.ToString()); Console.ReadKey();
- 清空 sb 中的数据
- sb.Clear(); //将 sb 清空。
StringBuilder sb = new StringBuilder(); //单个追加数据. sb.Append("Shane"); sb.Append(102030); sb.Append(true); //使用for循环追加数据. for (int i = 0; i <= 100; i++) { sb.Append(i); } Console.WriteLine(sb.ToString()); sb.Clear(); Console.WriteLine(sb.ToString()); //清空. Console.ReadKey();
- sb.Clear(); //将 sb 清空。
StringBuilder 效率测试
- Stopwatch 类
- 秒表计时器,用来记录程序运行时间。
- 注意:Stopwatch 依赖 System.Diagnostics 命名空间。
- 创建 Stopwatch 类型对象
- Stopwatch sw = new Stopwatch();
- sw.Start(); //计时器开始.
- sw.Stop(); //计时器结束.
- sw.Elapsed; //开始到结束之间的时长.
Stopwatch sw = new Stopwatch(); //要在前面添加命名空间. sw.Start(); StringBuilder sb = new StringBuilder(); sb.Append("Shane"); sb.Append(102030); sb.Append(true); for (int i = 0; i <= 100; i++) { sb.Append(i); } Console.WriteLine(sb.ToString()); sw.Stop(); Console.WriteLine(sw.Elapsed); Console.ReadKey();
- 效率测试
- 使用 for 循环分别往 string 和 StringBuilder 中追加5万个信息,统计时长。
Stopwatch sw = new Stopwatch(); sw.Start(); string names = ""; for (int i = 0; i <= 50000; i++) { names += i; } sw.Stop(); Console.WriteLine(sw.Elapsed); //1.7秒多. Stopwatch sw_2 = new Stopwatch(); sw_2.Start(); StringBuilder sb = new StringBuilder(); for (int i = 0; i <= 50000; i++) { sb.Append(i); } sw_2.Stop(); Console.WriteLine(sw_2.Elapsed); //不到1秒. Console.ReadKey();
- 使用 for 循环分别往 string 和 StringBuilder 中追加5万个信息,统计时长。
- 思维扩展
- “秒表计时” 判断代码在时间上的执行效率,在后期需要测试执行效率时可以使用。