这是源代码,具体问题在最下面: using System;
  public class A
  { 
   public A()
   { 
   Console.WriteLine("A");
   } 
}   public class B
  { 
   public B() 
   { 
   Console.WriteLine("B");
   } 
}   public class C : A
  { 
   B newb = new B();
}   class MainClass
  { 
   public static void Main()
   { 
   C newc = new C();
   Console.ReadLine();
   } 
  } 这个C#程序的输出结果是:
B
A问题是:请问Main函数中 “C newc = new C();” 是按照什么顺序执行的?

解决方案 »

  1.   

    首先执行A的构造函数,再执行C的构造函数,C的构造函数调用B的构造函数。输出
    A
    B
      

  2.   

    C newc = new C();
    先执行 B 的构造,输出B,然后执行父类A的构造,输出A
      

  3.   

    类的成员变量初始化先与构造函数执行
    先执行 B newb = new B()在执行构造函数 输出B A
      

  4.   

    不好意思,看错了,B newb = new B();不是在C的构造函数中,而是在定义成员变量。bdmh说的对。
    答案是
    B
    A
      

  5.   

    Main()执行new C()时,先执行 C的字段赋值,即new B(),显示B,然后执行C的默认构造函数,由于C派生自A,所以转而执行A的构造函数,显示A.
      

  6.   

    本帖最后由 caozhy 于 2012-03-14 08:28:37 编辑