在使用.NET字符串时保留系统资源

ZDNet软件频道 时间:2003-05-21 作者:BUILDER.COM |  我要评论(2)
本文关键词:
.NET Framework包含了很多类和方法来处理字符串。其中有一个名为StringBuilder的类,它比标准的String类在处理字符串时所消耗的资源更少。
本文译自Builder.com,未经许可请勿转载应用程序都要以某种方式处理文本信息,几乎没有例外。因此,程序员们每天都要面对与字符串相关的任务。.NET Framework包含了很多类和方法来处理字符串。其中有一个名为StringBuilder的类,它比标准的String类在处理字符串时所消耗的资源更少。让我们先看看为什么使用String类会导致代码的低效。然后,再看怎样用StringBuilder类来节省内存和处理器时间。

将字符串安插到内存中

当你声明一个.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。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134