流放之路受伤释放宝石:vb+access数据库编程中,对象变量什么时候用new,什么时候用set,这两个关键字到底有什么涵义

来源:百度文库 编辑:高校问答 时间:2024/04/29 20:04:24
通用声明里已经有 Private cnn As ADODB.Connection
为什么在又要在过程sub里定义Set cnn = New ADODB.Connection
第一个cnn和第二个cnn 是同一个对象吗?
都是同一个模块

其实两句可用合而为一:
Private cnn As New ADODB.Connection

一下是对set的解释:

Set 语句

将对象引用赋给变量或属性。

语法:

Set objectvar = {[New] objectexpression | Nothing}

说明:

Dim、Private、Public、ReDim以及 Static 语句都只声明了引用对象的变量。在用 Set 语句将变量赋为特定对象之前,该变量并没有引用任何实际的对象。

下面的示例说明了如何使用 Dim 来声明 Form1 类型的数组。Form1 实际上还没有实例。然后使用 Set 将新创建的 Form1 的实例的引用赋给 myChildForms 变量。在 MDI 应用程序中可以使用这些代码来创建子窗体。

Dim myChildForms(1 to 4) As Form1
Set myChildForms(1) = New Form1
Set myChildForms(2) = New Form1
Set myChildForms(3) = New Form1
Set myChildForms(4) = New Form1

通常,当使用 Set 将一个对象引用赋给变量时,并不是为该变量创建该对象的一份副本,而是创建该对象的一个引用。可以有多个对象变量引用同一个对象。因为这些变量只是该对象的引用,而不是对象的副本,因此对该对象的任何改动都会反应到所有引用该对象的变量。不过,如果在 Set 语句中使用 New 关键字,那么实际上就会新建一个该对象的实例。

New为对象创建实例,即分配内存空间。就像从人类具体到了某个人一样。对象有了实例以后才可以使用,使用set 设定对象的属性值。