Let 与 Set 的不同用法
邹坚壁
2023-12-01
Let是BASIC使用者的老朋友了,在QB时代就已经有Let这个叙述,而Set是VB后来新增的。
Let与Set一样都是将变量传递到另一个变量,但两者还是不同,VB的变量有非常非常多的种类,但小瓜瓜自己把他们分成两类,一种是资料变量,另一个是物件变量。Let用于定义资料变量;Set用于定义物件变量。
Private Sub Command1_Click()
Dim A As Long, B As Long, C As Long
Dim X As Object, Y As Object, Z As Object
Let A = B '相当于 A = B, A的值与B的值相同,但各有自己的内存空间
Let C = A
Let B = A
Set X = Y '用于物件, X 的内存地址指向 Y , 因此 Y 变, X 就跟着变
Set Y = Z
Set Z = X
Set A = B '错误,资料变量不能用Set转移资料
Let X = Y '错误,物件变量不能用Let转移资料
End Sub
Private Sub Command1_Click()
Dim chdNode As Object, chdText As String
Set chdNode = TreeView1.Nodes.Add(, , , "节点")
Let chdNode = TreeView1.Nodes.Add(, , , "节点") '错,因为 TreeView1.Nodes.Add 会产生物件
chdNode = TreeView1.Nodes.Add(, , , "節點") '错,因为省略不写则会被视为Let
Set chdText = TreeView1.Nodes(1).Text '错,TreeView1.Nodes(1).Text 不是物件,只会把值传出来'WWW.IZXBC.COM
Let chdText = TreeView1.Nodes(1).Text
chdText = TreeView1.Nodes(1).Text
End Sub
Let与Set有各自的特性,Let用来设定传值型(ByVal)的变量,而Set是用来设定参考型(或传址型)(By Refrence)的变量,由于QB并没有物件这一种资料形态,所以不会有 Set变量 = 变量 的语法出现。