9

我一直在浏览一个旧的 VB6 代码,我看到了这样的东西

 Set AST = CreateObject("ADODB.Stream")

我有使用 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

我认为Set在上面的代码中使用不同。这两种方法有什么区别?我想知道Set在VB6中做了什么

4

1 回答 1

11

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" 

虽然默认属性在编写 Visual Basic 代码时启用了一定数量的速记,但它们有几个缺点:

...

  • 默认属性使 Set 语句在 Visual Basic 语言中是必需的。以下示例显示了如何需要 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 文档的链接。

于 2013-08-05T06:14:36.697 回答