1.我们在模块中定义的变量和函数可以在任何窗体里调用,而且变量的生命周期是整个程序,这个对吗?
2.在一个窗体里定义的private和public变量的生命周期各自是什么?它们有什么区别?
3.在一个窗体里定义的private和public函数的生命周期各自是什么?它们有什么区别?
请详细说明,不要函数的说“可能”,我要确切答案。

解决方案 »

  1.   

    1,模块中定义的PUBLIC变量在工程的任何窗体都可以用,而定义的函数只要不写明PRIVATE默认都是PUBLIC的,任何窗体都能用
    2。PUBLIC的声明周期是整个工程运行期都有效,PRIVATE则只在他定义的这个窗体或模块或函数中有效,和函数及过程正好相反,定义变量默认的就是PRIVATE,用DIM定义的就是PRIVATE变量。
    3。在任何地方定义的PUBLIC变量和函数及过程都在整个工程运行期有效,除非该函数或变量是定义在窗体中,当该窗体的所有副本都被卸载(或未加载),才无法被引用这些都是非常基础的知识,建议楼主好好看看基础书了。
      

  2.   

    你说的不完全对,你说“PUBLIC的声明周期是整个工程运行期都有效,”
     我创建2个窗体form1和form2,其中form1上有个command1代码如下:
    form1中:
      Public a As Integer  Private Sub Command1_Click()
      Unload Me
      Form2.Show
      End Sub  Private Sub Form_Load()
      a = 1
      End Subform2中:
      Private Sub Form_Load()
      MsgBox a
      End Sub按你的说法,msgbox a应该显示1,但没有喔。看来基础知识也需要牢靠才行喔
      

  3.   

    在VB中
    除了标准模块都是类模块(窗体模块、用户自定义控件……)
    标准模块:
        声明区 过程中
    Public 进程级  × 
    Private 进程级  × 
    Static  ×  进程级
    Dim   进程级 过程级
    类模块:
        声明区 过程中
    Public 对象级  × 
    Private 对象级  × 
    Static  ×  对象级
    Dim   对象级 过程级
    特点:
    1.Private、Public对变量的生存周期影响是一样的,只是访问权限不同(编译器设定的)。
    2.Private、Friend、Public的区别只对类模块函数而言(访问权限区别不算),表示调用方式不同:Private、Friend的函数调用都是“成员函数调用”(C++术语),而Public的函数是“虚函数调用”(如果你用Object类型,则是IDispatch后期绑定)。
    3.VB中缺乏类似C++中的静态成员(.Net中的类成员)的定义方法,所以千万要注意Static的真正含义。
    4.Static变量在第一次访问过程时建立,进程结束(标准模块中)、对象析构(类模块中)时释放。
    5.注意VB的窗口模块存在默认对象的概念,比如你建立一个Form1,工程中就有了Form1这个类,此时你再以“Form1.xxx”的形式访问Form1(或者启动窗体是Form1),此时会建立一个名为Form1的对象。这就造成了类与对象同名的现象。
    6.VB的对象都是COM对象,其生存周期依赖接口计数:每次将对象绑定到对象型变量时计数+1;每次将绑定了对象的对象型变量设为Nothing时该对象计数-1。
    7.定义变量时用“As New xxx”并不是立即创建出某种类型的对象,而是指访问该变量时,VB会检查该变量,若为Nothing则新建对象。
      

  4.   

    8.类模块中的Public的变量也是“成员变量”(C++术语),访问另一对象的Public成员必须写清楚对象名——对象名.成员!这是初学者常犯的错误。
      

  5.   

    To bite119():
    在form1定义的a是对象级的
    模块外需要以Form1.a的形式访问所以在form2中
    VB找不到a这个变量
    由于你没有写“Option Explicit”
    所以VB自动帮你在Form_Load中建立了一个过程级Variant变量
    此时的a是指form2的Form_Load那个过程级变量a