关于类型String And StringBuilder的比较

iqhw 2005-11-08 11:51:45
这两个类型有点迷糊,所以来请教一下大家:
比如说吧:
生成SQL语句,
Dim strSql as String
strSql = " SELECT * "
strSql &= " FROM TABLE "

Dim strSql as New StringBuilder
strSql.Append(" SELECT * ")
strSql.Append(" FROM TABLE ")

到底哪个会有优势呢,有什么区别呢,
据我的理解,如果有错误请大家指出,不胜感激,
string类型分配空间,但是执行第二条语句的时候,会重新分配空间字符串连接后重新写入,就是说string类型不断的分配更多的空间,转移空间,来操作,空间操作比较实时;
stringBuilder类型,在New的时候分配较大的空间,.Append方法后不断的在里面填充数据,速度可能快一点;

是这样的吗,如果作出选择呢?
...全文
213 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
iqhw 2005-11-16
  • 打赏
  • 举报
回复
我测试了一下,体会一点,
dim strTest as String,
在strTest无论是nothing orelse ""都可以利用
if strTest = "" then return
判断,
1,但是strTest = ""的时候,
if strTest is nothing then return不能判断,
2,strTest.Length = 0在strTest is nothing 的时候,
会throw(ex),

所以我认为strTest = ""比较方便一些
李必胜 2005-11-10
  • 打赏
  • 举报
回复
It's useful because if a string variable is nothing, you can compare it against string.Empty without throwing an exception.
BenBenBoy 2005-11-10
  • 打赏
  • 举报
回复
判断一个字符串是否为空
用 str.Length 是效率最高的 最差就是 startDateTime = ""

----------------------------

关键如果str是nothing,上面的 str.Length会不会抛出例外?
qugui 2005-11-08
  • 打赏
  • 举报
回复
stringBuilder适合操作比较多的时候。
exboy 2005-11-08
  • 打赏
  • 举报
回复
理解的差不多了
hanbb1982 2005-11-08
  • 打赏
  • 举报
回复
该说的,上面都说了。
lsqkeke 2005-11-08
  • 打赏
  • 举报
回复
判断一个字符串是否为空
用 str.Length 是效率最高的 最差就是 startDateTime = ""
湖中仙人 2005-11-08
  • 打赏
  • 举报
回复
你用nothing 的时候应注意,系统是把它当为了一种类型还是一个字符串
iqhw 2005-11-08
  • 打赏
  • 举报
回复
实际上,你无论是判断:startDateTime is nothing,
或者startDateTime = ""是一样的效果
iqhw 2005-11-08
  • 打赏
  • 举报
回复
Dim startDateTime As String
startDateTime = nothing

if 条件当然会执行的,我感觉
gzsxy8013 2005-11-08
  • 打赏
  • 举报
回复
看过有收获
我现在遇到这样一个问题
Dim startDateTime As String
Dim finishDateTime As String

---code----
if startDateTime is nothing then
startDateTime ="asdf"
end if
判断startDateTime 发现startDateTime=nothing 而实际上调试发现if执行了
我觉得很奇怪
后来我这样写
问题解决了

Dim startDateTime As String =""
Dim finishDateTime As String=""

不知道什么原因
按照你上面的说得 好像可以理解的


BenBenBoy 2005-11-08
  • 打赏
  • 举报
回复
知道Java里面的String 和 StringBuffer的区别的话就很好理解了。

简单的说,string 连接的时候,是重新生成一个string对象,
然后把新老字符串内容分别拷贝过去。这主要是因为string分配好空间后是不可更改的。

而stringbuilder则不一样,他可以动态修改它所分配的空间,这样在做连接的时候
可以只把新字符串内容拷贝过去,节省了一半的时间
feiyun0112 2005-11-08
  • 打赏
  • 举报
回复
如果拼接的字符串比较多的时候stringBuilder有优势
iqhw 2005-11-08
  • 打赏
  • 举报
回复
exboy(kuku)兄:多多指教,
qugui(阿贵):好,

我在想,stringbuilder毕竟是一个类,基本的类操作还是相对string类型来说,比较复杂,速度也不是那么快了,不知道有没有这个原因?
jxufewbt 2005-11-08
  • 打赏
  • 举报
回复
基本上是这样的

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧