VBS中什么时候该用set赋值

来源:百度知道 编辑:UC知道 时间:2024/06/28 23:51:03
资料上说凡是将一对象引用赋给变量,就需要使用set关键字

set fs=createobject("scripting.filesystemobject")
set a=fs.getspecialfolder(0)
set b=fs.getspecialfolder(1)
set c=fs.getspecialfolder(2)
wscript.echo a & b & c
上面代码中,如果不用set 赋值也同样可以得到相同的结果,为什么?

如果没用set赋值,a变量只是截取系统目录位置的字符串,而无法继续其它更多操作,除非再用set赋值a变量的其他属性再可以继续操作,这就是2个不同之处
set fs=createobject("scripting.filesystemobject")
set a=fs.getspecialfolder(0)
for each b in a.subfolders
wscript.echo b.path
next
wscript.echo "文件夹数"&a.subfolders.count
wscript.echo "文件数"&a.files.count

对象有默认属性,就是在不指明什么属性的情况下使用的属性,如err对象,若不指明是用什么属性表示使用err.number属性,所以经常会看到有err=0之类的很莫名的写法。你这个问题也是一样,其实你是使用了文件夹对象a.path属性,不信你用a.path试试效果也是一样的。

X=fso.getspecialfolder(N)其实是一种简略的写法,完整的写法为X=fso.getspecialfolder(N).path之类的。明白了吧。

最好加set,否则可能会出问题,上面的程序不加set就会出错,见图: