StringBuilder对象
通过上面的分析可以看出,String类型在做字符串的连接操作时,效率是相当低的,并且由于每做一个连接操作,都会在内存中创建一个新的对象,占用了大量的内存空间。这样就引出StringBuilder对象,StringBuilder对象在做字符串连接操作时是在原来的字符串上进行修改,改善了性能。这一点我们平时使用中也许都知道,连接操作频繁的时候,使用StringBuilder对象。但是这两者之间的差别到底有多大呢?来做一个测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
1using System; 2using System.Text; 3 4namespace Demo5 5{ 6 /**/ /// <summary>
7 /// String和StringBulider比较
8 /// </summary>
9 public
class Test
10 { 11 public
static void Main( string [] args)
12 { 13 string
a = "" ;
14 StringBuilder s = new
StringBuilder();
15 16 int
times = 10000;
17 int
start,end;
18 19 /**/ ///测试String所用的时间
20 start = Environment.TickCount; 21 for ( int
i=0;i<times;i++)
22 { 23 a += i.ToString(); 24 } 25 end = Environment.TickCount; 26 Console.WriteLine((end-start)); 27 28 /**/ ///测试StringBuilder所用的时间
29 start = Environment.TickCount; 30 for ( int
i=0;i<times;i++)
31 { 32 s.Append(i.ToString()); 33 } 34 end = Environment.TickCount; 35 Console.WriteLine((end-start)); 36 37 Console.ReadLine(); 38 } 39 } 40} 41 运行结果: 884 0 |
通过上面的分析,可以看出用String来做字符串的连接时效率非常低,但并不是所任何情况下都要用StringBuilder,当我们连接很少的字符串时可以用String,但当做大量的或频繁的字符串连接操作时,就一定要用StringBuilder。