System.Text.StringBuilder sb =newSystem.Text.StringBuilder();
System.Text.StringBuilder sb =newSystem.Text.StringBuilder(); sb.Append("123456789");//添加一个字符串 sb.Length=3;//设置容量为3 Console.WriteLine( sb.ToString());//这里输出:123 sb.Length=30;//重新设置容量为30 Console.WriteLine( sb.ToString()+",结尾");//这里在原来字符串后面补齐空格,至到Length的为30 Console.WriteLine( sb.Length);//这里输出的长度为30
System.Text.StringBuilder sb =newSystem.Text.StringBuilder();//初始化一个StringBuilder Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length); sb.Append(‘1‘,17);//添加一个字符串,这里故意添加17个字符,是为了看到Capacity是如何被扩充的 Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length); sb.Append(‘2‘,32);//添加一个字符串 Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length); sb.Append(‘3‘,64);//添加一个字符串 Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length); //注意这里:如果你取消Remove这步操作,将会引发ArgumentOutOfRangeException异常,因为当前容量小于 //Length,这在自己控制StringBuilder的时候务必要注意容量溢出的问题 sb.Remove(0,sb.Length);//移出全部内容,再测试 sb.Capacity=1;//重新定义了容量 sb.Append(‘a‘,2); Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length); sb.Append(‘b‘,4); Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length); sb.Append(‘c‘,6); Console.Write("Capacity:"+ sb.Capacity);//这里的Capacity会自动扩大 Console.WriteLine("\t Length:"+ sb.Length
Capacity:16Length:0//输出第一次,默认的Capacity是16 Capacity:32Length:17//第二次,我们故意添加了17个字符,于是Capacity=Capacity*2 Capacity:64Length:49//继续超出,则Capacity=Capacity*2 Capacity:128Length:113 Capacity:3Length:2//清空内容后,设置Capacity=1,重新添加了字符 Capacity:7Length:6//后面的结果都类似 Capacity:14Length:12
if ( Capacity < Length && Capacity > 0 ){ Capacity *= 2; }
System.Text.StringBuilder sb =newSystem.Text.StringBuilder(); int i =0; longStartTime=DateTime.Now.Ticks; while( i <100000) { sb.Append( i.ToString()); i++; } longEndTime=DateTime.Now.Ticks; Console.WriteLine("时间:"+(EndTime-StartTime)+"\t Capacity:"+ sb.Capacity+"\t Length:" + sb.Length); System.Text.StringBuilder sb1 =newSystem.Text.StringBuilder(); i =0; StartTime=DateTime.Now.Ticks; while( i <100000) { if( sb1.Capacity<= sb1.Length)//先判断是否>Length { sb1.Capacity+=7;//这里一定要根据情况的增加容量,否则会有性能上的消耗 } sb1.Append( i.ToString()); i++; } EndTime=DateTime.Now.Ticks; Console.WriteLine("时间:"+(EndTime-StartTime)+"\t Capacity:"+ sb1.Capacity+"\t Length:" + sb1.Length);
System.Text.StringBuilder sb =newSystem.Text.StringBuilder(); int i =0; longStartTime=DateTime.Now.Ticks; while( i <100000) { sb.Append( i.ToString()); i++; } longEndTime=DateTime.Now.Ticks; Console.WriteLine("时间:"+(EndTime-StartTime)); string sb1 =null; i =0; StartTime=DateTime.Now.Ticks; while( i <100000) { sb1 += i; i++; } EndTime=DateTime.Now.Ticks; Console.WriteLine("时间:"+(EndTime-StartTime));
原文:http://www.cnblogs.com/moonache/p/5168741.html