vb中Let与Set的区别

2012-06-11  金城  11483

LET 标准定义赋值给一个变量或属性。

variable = value

参数

variable
任何变量或可写的属性。
value
任何数值或字符串文字、常数或表达式。

说明

等号左边的名称可以是一个简单的标量变量或数组的一个元素。等号左边的属性仅可以是那些在运行时可写的属性。

SET 标准定义

将对象引用赋给一个变量或属性,或者将对象引用与事件关联。

Set objectvar = {objectexpression | New classname | Nothing}

-或者-

Set object.eventname = GetRef(procname)

参数

objectvar
必选项,变量或属性名称;符合标准变量命名规则。
objectexpression
可选项,与对象名称一致的表达式,另一个相同对象类型、函数或方法的已声明变量,它们返回相同对象类型的对象。
New
用于创建一个类的新实例的关键字。如果objectvar包含一个对某个对象的引用,当一个新的引用被赋给这个对象之后,则这个引用将被释放。New关键仅用于创建一个类的实例。
classname
可选项. 创建的类名称。使用Class语句定义类及其语句。
Nothing
可选项。断开objectvar与任何指定对象或类的关联。当没有其他变量引用前面的引用对象时,将objectvar赋值为Nothing以释放与前面的引用对象相关联的系统或内存资源。
object
必选项。与 event 相关联的对象名称。
event
必选项。函数作用域的事件名称。
procname
必选项。包含与event相关联的SubFunction名称的字符串。

说明

为了使其有效,objectvar必须与赋值的对象类型相一致。

DimPrivatePublicReDim语句仅声明一个引用对象的变量。在使用.Set语句为一个具体对象赋值之前,没有实际对象可以引用。

通常,当您使用Set语句将一个对象引用赋给一个变量之前,不会创建那个变量的对象的副本。实际上,只创建了一个对象的引用。多个引用对象变量可以引用相同的对象。因为这些变量都是对象的引用,而不是对对象副本的引用,因此对象中所作的任何变化都可以在引用该对象的所有变量中反映出来。

Function ShowFreeSpace(drvPath)
   Dim fso,d,s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(fso.GetDriveName(drvPath))
   s = "Drive " &UCase(drvPath) &" - "
   s = s &d.VolumeName &"<BR>"
   s = s &"Free Space:" &FormatNumber(d.FreeSpace/1024,0)
   s = s &" Kbytes"
   ShowFreeSpace = s
End Function

利用New关键字,您可以随时创建一个类的实例,并将一个对象引用变量赋值给它。赋给类的实例的变量一定利用Dim(或相似的语句)语句事先已经声明。

有关使用Set语句关联一个过程与对象的详细信息,请参考GetRef函数的文档。

区别:

let 是针对 基础类型的变量(Variant) 如 string,int,long,boolean,datetime,float,double

set 是针对 对象类型的变量(Object)

let a=b 可以缩写为 a=b

set x=new cls_object 不能缩写为 x=cls_object 或 x=new cls_object

set MyObj.SomeFunc=GetRef("MySomeFunc")

let 是按值传递的

set 是按引用地址传递的

在VB和VBS中有所区别;VBScript 是一种后期约束型语言。

VB中可以 dim a as int

VBS中只能 dim a

VB中可以用 Dim X as Newclassname

VBS中只能 Dim X:Set X=New classname

Property Let 是设置变量用的。

Property Set 是设置对象用的。

Property Get是取回属性用的。