将字符串安插到内存中
当你声明一个.NET String数据类型并为其赋值后,这个值被存储在内存中。所分配的内存数量由实际的文本量决定。下面的代码声明并赋值了一个字符串:
Dim sample As String=“Builder.com”
相同的C#声明是:
string sample= “Builder.com”;
两条语句都分配了11个字符长度的内存。实际上,每次创建一个String值的时候都会在内存中产生一个新的字符串。这是很重要的一点,在讨论StringBuilder类的时候将再次谈到。在继续之前,让我们看看String数据类型其它方面的特点。
虽然创建一个静态文本值是很常规的,在一个普通任务中用多个字符串数据元素创建新值也是一样。你可以使用加号(+)将多个文本连接起来。下面的例子先用VB.NET然后用C#说明了字符串的串联:
VB.NET
Dim sample1 As String=“Builder.com”
Dim sample2 As String=“Rules”
Dim sample3 As String
sample3=sample1+“”+sample2
C#
string sample1=“Builder.com”;
string sample2=“Rules”;
string sample3;
sample3=sample1+“”+sample2;
两段代码的结果都是字符串“Builder.com Rules”,整个过程在内存中创建了四个字符串。首先创建的是sample1,接下来是sample2然后是sample3。最后一行在内存中创建了另一个字符串,它包含了串联的结果。
你也许会认为这样的顾虑没有意义——对于这个例子代码所用到的一点点内存来说也许你是对的。但是假设你正创建一个相当长的使用各种源值的SQL语句,那么大量对象的创建所需要(或浪费)的内存以及处理时间会成为程序的一个瓶颈。由于考虑到这样的原因,微软将StringBuilder类包含进了.NET。