我一直在浏览一个旧的VB6代码,我看到了类似的东西
Set AST = CreateObject("ADODB.Stream")
我有使用VB6和VB.NET的经验,但我之前从未在VB6项目中使用此关键字Set
。我在互联网上研究了很多Set
的用法,我只知道Properties
中的用法,这是我在VB.NET中所知道的
Public Property myProperty As String
Get
Return _myProperty
End Get
Set(value as String)
_myProperty = value
End Set
End Property
我认为Set
在上面的代码中的使用方式不同。这两种方法有什么区别?我想知道Set
在VB6中做了什么
答案 0 :(得分:10)
Set
正在为AST
变量分配一个新引用,而不是为(默认属性为AST
}当前引用的对象赋值)。
网上没有太多的VB 6文档,但是 1 VB.Net的一些帮助仍然引用了较旧的方法。
请参阅Default Property Changed for Visual Basic 6 Users:
在Visual Basic 6.0中,对象支持默认属性。例如,在Label控件上,Caption是默认属性,以下示例中的两个赋值是等效的。
Dim lbl As Label
lbl = "Important"
lbl.Caption = "Important"
虽然默认属性在编写Visual Basic代码时启用了一定的速记,但它们有几个缺点:
...
- 默认属性使Visual Basic语言中的Set语句成为必需。以下示例显示了如何使用Set来指示要分配对象引用而不是默认属性。
Dim lbl1 As Label, lbl2 As Label
lbl1 = "Saving" ' Assign a value to lbl1's Caption property.
lbl2 = lbl1 ' Replace lbl2's Caption property with lbl1's.
Set lbl2 = lbl1 ' Replace lbl2 with an object reference to lbl1.
因此,在VB.Net中,Let
和Set
已经过时(事实上,Let
在VB 6中已经过时了)因为语言规则发生了变化。如果A = B
是参考,则作业A
始终为A
分配新引用。
1 MarkJ在评论中提供了旧版VB6文档的链接。