none
Sub New方法默认先对变量进行赋值?-已解决 RRS feed

  • 问题

  •  

    资料上说“sub new在主应用程序访问模块中的过程或变量之前运行”,可是我在对一个简单的console程序F8单步测试的时候,却发现,程序先进入sub new,然后跳出,对变量进行复制,再进入sub new来继续后面的过程。还有一个有趣的现象,是如果在模块中声明了 一个变量,但是没有对其赋值,那么则不会对其运行。

     

    代码如下所示:

    Module Module1

        Dim str As String = "Start"

        Sub New()

        End Sub

        Sub main(ByVal args() As String)

            For i As Integer = 0 To UBound(args)
                Console.WriteLine(args(i))
            Next

            str = test2.str

            Console.WriteLine(str)
        End Sub

    End Module

    Module test2
        Public str As String = "Start in test Module" ‘step 2

        Sub New()  ’step 1
            Console.WriteLine("Begin test2 module") ‘step 3
            str = "End" ‘step 4
        End Sub

    End Module

     

     

    2008年12月26日 7:27

答案

  • sub new 是构造函数

    也就是对象在真正实例化的时候 必须调用的过程

    你观察的很仔细  sub  new 这个函数在第一次访问成员的时候被访问 正证明了对象其实是在第一次被访问的时候才创建的

    延迟创建 正是提高运行效率的重要手段   已经成为默认的方式

     

     

    2008年12月26日 13:59

全部回复

  • sub new 是构造函数

    也就是对象在真正实例化的时候 必须调用的过程

    你观察的很仔细  sub  new 这个函数在第一次访问成员的时候被访问 正证明了对象其实是在第一次被访问的时候才创建的

    延迟创建 正是提高运行效率的重要手段   已经成为默认的方式

     

     

    2008年12月26日 13:59
  • 感谢韦恩的回答。

    我现在理解sub new是初始化实例的时候必须进行的一步,而对变量的赋值也是必须进行的一步。他们两个没有必然的关系。
    2008年12月30日 5:53