VB6关键字设置是什么意思?

Mp *_*ega 8 vb.net vb6

我一直在浏览一个旧的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用户更改的默认属性:

在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文档的链接.

  • +1,但MS6上仍然提供VB6文档.从VB6用户指南,这里是[设置](http://msdn.microsoft.com/en-us/library/aa266283(v = vs.60).aspx),[让](http://msdn.microsoft .com/zh-cn/library/aa243390(v = vs.60).aspx)和[使属性或方法成为默认值](http://msdn.microsoft.com/en-us/library/aa263533(v = vs.60)的.aspx) (4认同)