懒得测试了。。。:)跟各位讨论一个简单的问题,

gooore 2009-09-21 11:04:12

a=0

if a>0 then

dim c as classA
set c = new classA

end if

set c=nothing



这段语句运行会不会出错?
...全文
166 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
king06 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 gooore 的回复:]
忘了从哪本书上面看到的了,If语句里面变量的生存周期仅在语句内,跟这个有没有联系吗??
[/Quote]
VB自己处理了.
贝隆 2009-09-21
  • 打赏
  • 举报
回复
学习。
SYSSZ 2009-09-21
  • 打赏
  • 举报
回复
a=0

if a>0 then'上一句是a=0,所以这段代码不会执行

dim c as classA
set c = new classA

end if

set c=nothing'仅有可能执行这句,如果C没赋值,这句也是多余的
gooore 2009-09-21
  • 打赏
  • 举报
回复
忘了从哪本书上面看到的了,If语句里面变量的生存周期仅在语句内,跟这个有没有联系吗??
hanvan 2009-09-21
  • 打赏
  • 举报
回复
就是不会,没有为什么
ltpao 2009-09-21
  • 打赏
  • 举报
回复
VB变量最小的作用范围是过程级
神马都能聊 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jhone99 的回复:]
懒得解释了
[/Quote]


    Dim o As Object
If 1 = 0 Then
Dim o As Object
End If
Set o = Nothing

这样写的时候就看出来了,变量不能重复定义,可以看出定义在if里面和外面一样的。

又set o = nothing仅仅是释放引用计数,当且仅当引用计数变为0时卸载对象。
由于o的引用计数本来就是0,所以不会引发卸载。
gooore 2009-09-21
  • 打赏
  • 举报
回复
不要跟业余vb卖关子嘛。说说,说说
jhone99 2009-09-21
  • 打赏
  • 举报
回复
懒得解释了
gooore 2009-09-21
  • 打赏
  • 举报
回复
解释下,为什么不会?:)
神马都能聊 2009-09-21
  • 打赏
  • 举报
回复
不会。
toury 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gooore 的回复:]
也就是说,在if语句内外声明变量是一样的了?!
[/Quote]
是。
声明不需要执行。在一个作用域里只要声明了一个变量,后面就可以引用了。
gooore 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 ljian_tju 的回复:]
什么语言
[/Quote]

VB版啊, VB 6.0
ljian_tju 2009-09-21
  • 打赏
  • 举报
回复
什么语言
threenewbee 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 gooore 的回复:]
VB code
a=0if a>0thendim cas classAendifset c=new classA


这样会出错不?
[/Quote]
不会。
gooore 2009-09-21
  • 打赏
  • 举报
回复

a=0

if a>0 then

dim c as classA

end if

set c = new classA




这样会出错不?
threenewbee 2009-09-21
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gooore 的回复:]
也就是说,在if语句内外声明变量是一样的了?!
[/Quote]
和C语言不一样。
C语言有代码块概念,比如 { int i; } i = 3; // Error
VB没有。
gooore 2009-09-21
  • 打赏
  • 举报
回复
也就是说,在if语句内外声明变量是一样的了?!
threenewbee 2009-09-21
  • 打赏
  • 举报
回复
不会。

Set C = Nothing
Set C = Nothing
Set C = Nothing

这样也不会。
gooore 2009-09-21
  • 打赏
  • 举报
回复
问题是c在if语句内声明,为什么set c= nothing 不会出错?


[Quote=引用 9 楼 syssz 的回复:]
a=0

if a>0 then'上一句是a=0,所以这段代码不会执行

  dim c as classA
  set c = new classA

end if

set c=nothing'仅有可能执行这句,如果C没赋值,这句也是多余的

[/Quote]

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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