VBS学习笔记(1): Set的取舍

这个系列从一个简单的问题开始吧—— "赋值语句中的是否要用set关键字?" 你有答案了吗?暂且不说要或者不要,哪一种更好。还没有走那么远。只是问你,你确信的问题的答案“正确”吗?不要急于辩解,看看下面的代码吧。

Dim WshShell, WshSysEnv, ProcArc

 

set WshShell = WScript.CreateObject("WScript.Shell")

 

set WshSysEnv = WshShell.Environment("System")

 

set ProcArc = WshSysEnv("PROCESSOR_ARCHITECTURE")

 

WScript.Echo ProcArc

你觉得这一下段代码会有错误吗?。。。它真有错误!!!

执行完以上代码,你会得到如下错误:“...Object Required:'[string:"X86"]'...”

我在微软官方网站上看到的是“set将对象引用赋给变量或属性”,那么如果将“非对象引用赋给变量或属性”而且用了set关键字,会咋样呢?你答对了,就是上面的错误。

我总结一下,可能不够专业,见笑:“对象要赋值给非对象的变量,此时必须用set;而非对象的要赋值给对象,此时一定不能用set;set后面跟的的变量则总是被解释器看作是非对象的变量”。

终于找到依据了:Set is a special VBScript statement that is used only when creating an object reference. If you use Set for other purposes, such as assigning a value to a variable, a run-time error will occur.(引自:http://technet.microsoft.com/en-us/library/ee198850.aspx

原文地址:https://www.cnblogs.com/ceachy/p/2149088.html