Foxtable(狐表)用户栏目专家坐堂 → 介绍一下StringBuilder


  共有11380人关注过本帖树形打印复制链接

主题:介绍一下StringBuilder

帅哥哟,离线,有人找我吗?
狐狸爸爸
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
介绍一下StringBuilder  发帖心情 Post By:2010/8/1 10:31:00 [只看该作者]

StringBuilder

 

StringBuilder通常用于大规模地合并字符串。

 

StringBuilder的方法有:

 

名称 说明
Append 将指定的字符串合并到StringBuilder中
AppendLine 另起一行,然后将指定的字符串合并到StringBuilder中。
ToString 将StringBuilder中的内容转换为字符串。

 

示例

 

在命令窗口执行下面的代码:

 

Dim dt As Date = Date.Now
Dim
v As String
Dim
s As new StringBuilder
For
i As Integer = 1 To 100000
    s.AppendLine("abc")
Next

v = s.Tostring
Output.Show((
Date.now - dt).Totalseconds)

 

在我的电脑测试,上述代码耗时0.015秒。

 

如果不采用StringBuilder,直接用字符变量和合并:

Dim dt As Date = Date.Now
Dim
v As String
For
i As Integer = 1 To 100000
    v = v & "abc" & vbcrlf
Next

Output.Show((
Date.now - dt).Totalseconds)

 

在我的电脑运行上述代码,耗时100.5秒。

 

可以看出在大规模合并字符串的时候,使用StringBuider比直接使用字符变量的性能高出数百倍。
所谓大规模,不仅和合并的次数有关,还和字符串本省的长度有关。

 

并非任何时候都要使用StringBuilder,例如我们将上面的代码修改一下,循环次数改为1000:

 

Dim dt As Date = Date.Now
Dim
v As String
For
i As Integer = 1 To 1000
    v
= v & "abc" &
vbcrlf
Next

Output.Show((
Date.now - dt).TotalSeconds)

 

耗时只有0.15秒,如果循环次数改为100,耗时为0秒,显示此时是否使用StringBuilder,对于性能的影响都是轻微的。

[此贴子已经被作者于2010-8-1 11:21:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
reachtone
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:版主 帖子:1991 积分:19363 威望:0 精华:20 注册:2008/9/2 10:09:00
  发帖心情 Post By:2010/8/1 10:58:00 [只看该作者]

数据可以添加到集合中,有没有将集合转变为数组或字符串的方法?

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/8/1 11:22:00 [只看该作者]

ToString方法将StringBuilder中的内容转换为字符串。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/8/2 21:33:00 [只看该作者]

呵呵,这种用法的机率不大。

帮助中的“显示此时是否使用StringBuilder”,似乎应该为“显然”。


 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7235 积分:40550 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2010/8/2 23:43:00 [只看该作者]

顶一顶!

 回到顶部