日期:2014-05-18  浏览次数:20678 次

关于继承与构造函数的一个问题
这是源代码,具体问题在最下面:
C# code

 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();” 是按照什么顺序执行的?


------解决方案--------------------
C newc = new C();
先执行 B 的构造,输出B,然后执行父类A的构造,输出A
------解决方案--------------------
类的成员变量初始化先与构造函数执行
先执行 B newb = new B()在执行构造函数 输出B A
------解决方案--------------------
探讨
首先执行A的构造函数,再执行C的构造函数,C的构造函数调用B的构造函数。

输出
A
B

------解决方案--------------------
探讨

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