我一直在浏览一个旧的VB6代码,我看到了这样的东西
Set AST = CreateObject("ADODB.Stream")
Run Code Online (Sandbox Code Playgroud)
我有使用VB6和VB.NET的经验,但我Set之前从未在我的VB6项目中使用过这个关键字.我在互联网上研究了很多东西是什么用途,Set我只知道Properties其中的用法只有我在VB.NET中知道
Public Property myProperty As String
Get
Return _myProperty
End Get
Set(value as String)
_myProperty = value
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
我认为Set上面的代码使用不同.这两种方法有什么区别?我想知道Set在VB6中做了什么
Dam*_*ver 10
Set正在为AST变量分配一个新引用,而不是为(AST默认属性)当前引用的对象赋值.
没有太多的VB 6文档围绕在网络上,但1一些帮助VB.Net仍引用老办法.
在Visual Basic 6.0中,对象支持默认属性.例如,在Label控件上,Caption是默认属性,以下示例中的两个赋值是等效的.
Dim lbl As Label
lbl = "Important"
lbl.Caption = "Important"
Run Code Online (Sandbox Code Playgroud)
虽然默认属性在编写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.
Run Code Online (Sandbox Code Playgroud)
所以,在VB.Net中,Let并且Set已经过时(事实上,Let在VB 6中已经过时了)因为语言规则发生了变化.赋值A = B(如果A是引用)始终为其分配新引用A.
1 MarkJ在评论中提供了旧版VB6文档的链接.