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

时间:2013-08-05 06:07:05

标签: vb.net vb6

我一直在浏览一个旧的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中做了什么

1 个答案:

答案 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中,LetSet已经过时(事实上,Let在VB 6中已经过时了)因为语言规则发生了变化。如果A = B是参考,则作业A始终为A分配新引用。


1 MarkJ在评论中提供了旧版VB6文档的链接。