1 Public Class Class1
2     Dim int1 As Integer = 0
3     Dim chr1 As Char
4     Sub New()
5         chr1 = "a"c
6     End Sub
7     Public Sub suba()
8        Dim classtest As New Class1
9         classtest.int1 = 0
10        MsgBox(classtest.int1.ToString, MsgBoxStyle.Information, "")
11
12    End Sub
13
14End Class
我断点跟踪,在程序的其他地方有一句: dim classtest as new class1,执行好这句后跳到上面语句行的顺序是:
4-->2->5->跳出
为什么类成员 初始话会在构造函数(new())之前执行呢?

解决方案 »

  1.   

    那也就是说:
    2     Dim int1 As Integer = 0
    3     Dim chr1 As Char
    4     Sub New()
    5         chr1 = "a"c
    6     End Sub
    和这样的写法是一样的:
    2     Dim int1 As Integer 
    3     Dim chr1 As Char
    4     Sub New()
              int1 =0
    5         chr1 = "a"c
    6     End Sub
    不知道生成的中间语言是怎么样的。
      

  2.   

    to  :  Knight94(愚翁) ( ) 为什么不是:2->4->5呢?
    难到在执行构造函数前要判断其他地方是否有成员变量初始话?
      

  3.   

    1Dim num As Integer Sub New()
    2   num = 0;
     End Sub如果先走2,再走1~汗,那不是会出现num为申明的ERROR!
      

  4.   

    to 为什么不是:2->4->5呢?我不想多说了,你有空看看类相关说明,你自己会明白的。