在vb中有set dim 和 let dim 
希望請教這兩組用法的區別;比如問題1.
Public Property Set m_DB(ByRef mdb As DBAccess.zDBAccess)
    Set mvarm_DB = mdb
    m_DBFlag = True
End PropertyPublic Property Let m_instCentID(ByVal instcentid As String)
    mvarm_instCentID = instcentid
End Property
這組用法有何區別問題2;
set rs = new adodb.recordset 和
dim rs as adodb.recordset問題3;
另在dim 中用了new與不用new 有何區別
如dim db as datebase
dim db as datebase

解决方案 »

  1.   

    還有dim和public及private定義的有何區別
      

  2.   

    兄弟刚接触VB吧Set是用来对对象赋值的,所有对象的赋值都必须使用Set 而Let用于其他的变量对象实例化通过New来实现set rs = new adodb.recordset
    dim rs as new adodb.recordset不同的是实例化的时间,dim rs as new adodb.recordset相当于声明对象的同时就进行了实例化(和初始化类似)没有实例化的对象是不能使用的,只能被赋值或者作为接口的参数声明问题三:区别就是有没有实例化了dim xDemo as new CDemo和dim xDemo as CDemo
    set xDemo=new CDemo效果一致,内部VB处理不太一样,建议分开使用,也就是采用第二种方式最后:实际上Dim是为了保持和以前VB兼容而保留的关键字(dim是最早VB变量声明得关键字),似乎完全可以不使用dim,因为它可以被代替。VB.net就不建议使用dim了
      

  3.   

    Public Property Let m_instCentID(ByVal instcentid As String)
        mvarm_instCentID = instcentid
    End Property在這裡不是對對象進行操作嗎,
    它和
    public property Get m_instCentID() as string
        m_instCentID = mvarm_instCentID
    end property
    正好實現了初始化對象m_instCentID嗎
    在看set
    Public Property Set m_DB(ByRef mdb As DBAccess.zDBAccess)
        Set mvarm_DB = mdb
        m_DBFlag = True
    End Property
    除了實例化了一個內置的對象其他無異
    希望能把set的用法再在這裡詳細分析一下.我這邊的msdn有問題,就拜託大家了
      

  4.   


    Property Set 语句      声明 Property 过程的名称,参数以及构成其主体的代码,该过程设置一个对象引用。语法[Public | Private | Friend] [Static] Property Set name ([arglist,] reference)
    [statements]
    [Exit Property] 
    [statements]End PropertyProperty Set 语句的语法包含下面部分:部分 描述 
    Optional 可选的。表示调用者可以提供或不提供该参数。 
    Public 可选的。表示所有模块的所有其它过程都可访问这个 Property Set 过程。如果在包含 Option Private 的模块中使用,则这个过程在该工程外是不可使用的。 
    Private 可选的。表示只有包含其声明的模块的其它过程可以访问该 Property Set 过程。 
    Friend 可选的。只能在类模块中使用。表示该 Property Set 过程在整个工程中都是可见的,但对对象实例的控制者是不可见的。 
    Static 可选的。表示在调用之间保留 Property Set 过程的局部变量的值。Static 属性对在该 Property Set 外声明的变量不会产生影响,即使过程中也使用了这些变量。 
    name 必需的。Property Set 过程的名称;遵循标准的变量命名约定,但不能与同一模块中的 Property Get 或 Property Let 过程同名。 
    arglist 可选的。代表在调用时要传递给 Property Set 过程的参数的变量列表。对于多个变量则用逗号隔开。 
    reference 必需的。对象引用赋值的右边所使用的包含对象引用的变量。 
    statements 可选的。Property 过程体中所执行的任何语句组。 
    其中的 arglist 参数的语法以及语法各个部分如下:[Optional] [ByVal | ByRef] [ParamArray] varname[( )] [As type] [= defaultvalue]部分 描述 
    Optional 可选的。表示参数不是必需的。如果使用了该选项,则 arglist 中的后续参数都必须是可选的,而且必须都使用 Optional 关键字声明。注意:Property Set 表达式的右边不可能是 Optional。 
    ByVal 可选的。表示该参数按值传递。 
    ByRef 可选的。表示该参数按地址传递。ByRef 是 Visual Basic 的缺省选项。 
    ParamArray 可选的。只用于 arglist 的最后一个参数,指明最后这个参数是一个 Variant 元素的 Optional 数组。使用 ParamArray 关键字可以提供任意数目的参数。ParamArray 关键字不能与 ByVal、ByRef 或 Optional 一起使用。 
    varname 必需的。代表参数的变量的名称;遵循标准的变量命名约定。 
    type 可选的。传递给该过程的参数的数据类型;可以是 Byte、Boolean、Integer、Long、Currency、Single、Double、Decimal(目前尚不支持)、Date、String(只支持变长)、Object 或 Variant。如果参数不是 Optional,则也可以是用户定义类型,或对象类型。 
    defaultvalue 可选的。任何常数或常数表达式。只在 Optional 参数时是合法的。如果类型为 Object,则显式的缺省值只能是 Nothing。 
    注意 每个 Property Set 语句必须为其所定义的过程定义至少一个参数。当 Property Set 语句所定义的过程被调用时,这个参数(如果有多个参数则指最后一个)就包含了将赋给属性的实际的对象引用。这个参数就是前述语法中的 reference。它不能是 Optional。说明如果没有使用 Public、Private 或 Friend 显式指定,则 Property 过程按缺省情况是公用的。如果没有使用 Static,则在调用之后不会保留局部变量的值。Friend 关键字只能在类模块中使用。不过 Friend 过程可以被工程中的任何模块的过程访问。Friend 过程不会在其父类的类型库中出现,且 Friend 过程不能被后期绑定。所有的可执行代码都必须属于某个过程。不能在别的 Property、Sub 或 Function 过程中定义 Property Set 过程。Exit Property 语句使执行立即从一个 Property Set 过程中退出。程序接着从调用该 Property Set 过程的语句下一条语句执行。在 Property Set 过程的任何位置都可以有 Exit Property 语句。Property Set 过程与 Function 和 Property Get 过程的相似之处是:它们都是一个可以获取参数,执行一系列语句,以及改变其参数的值的独立过程。而与 Function 和 Property Get 过程不同的是:这两个过程都有返回值,而 Property Set 过程只能用于对象引用赋值(Set 语句)的左边。
      

  5.   


    Set 语句      将对象引用赋给变量或属性。语法Set objectvar = {[New] objectexpression | Nothing}Set 语句的语法包含下面部分:部分 描述 
    objectvar 必需的。变量或属性的名称,遵循标准变量命名约定。 
    New 可选的。通常在声明时使用 New,以便可以隐式创建对象。如果 New 与 Set 一起使用,则将创建该类的一个新实例。如果 objectvar 包含了一个对象引用,则在赋新值时释放该引用。不能使用 New 关键字来创建任何内部数据类型的新实例,也不能创建从属对象。 
    objectexpression 必需的。由对象名,所声明的相同对象类型的其它变量,或者返回相同对象类型的函数或方法所组成的表达式。 
    Nothing 可选的。断绝 objectvar 与任何指定对象的关联。若没有其它变量指向 objectvar 原来所引用的对象,将其赋为 Nothing 会释放该对象所关联的所有系统及内存资源。 
    说明为确保合法,objectvar 必须是与所赋对象相一致的对象类型。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 关键字,那么实际上就会新建一个该对象的实例。
      

  6.   

    問題1.
    set 与 let 表示这个属性是对象、还是变量 ;set 》 对象 ,let 》变量問題2;
    set rs = new adodb.recordset 和 dim rs as adodb.recordsetdim rs as adodb.recordset '定义对象的类型
    dim rs as new adodb.recordset '定义对象的类型,并使该对象指向一段内存空间,但里面没有 任何东西
    set rs = new adodb.recordset  '使该对象指向一段内存空间,但里面没有 任何东西(象C语言的指针赋值一样)public private 是公有、私有的区别