public class HelloWorld
    {
        public int i = 21;
        static HelloWorld d = new HelloWorld();        public  void saihi()
        {
            Console.WriteLine(d.i);
        }   
    }    class Program
    {
        
        static void Main(string[] args)
        {
            HelloWorld aa = new HelloWorld();
            aa.i++;
            HelloWorld bb = new HelloWorld();
            bb.i++;
            HelloWorld cc = new HelloWorld();
            cc.i++;
            HelloWorld dd = new HelloWorld();
            dd.i++;            aa.saihi();
            bb.saihi();
            cc.saihi();
            dd.saihi();  
            
            Console.ReadLine();
        }
    }在上面的代码中:
1.当NEW一个HELLOWORLD时是先看构造函数先还是先看Static先??
2.能分析一下内存的布局吗??

解决方案 »

  1.   

    记住以下几点,以后再碰到这种问题你就可以迎刃而解了:
    1、先变量后构造函数
    2、先静态后实例化
    3、先派生类后基类(对于变量和静态构造函数而言)
    4、对于实例构造函数,基类构造函数在派生类构造函数之前执行
      

  2.   

    5、字段根据它们在源文件中的位置依次初始化
    6、避免从一个构造器调用虚方法,如果在初始化一个对象时需要调用一些虚方法,应在完整构造对象的地方使用两阶段的构建并随后调用已构造对象的初始化方法
      

  3.   

    继承类静态成员变量初始化 
    继承类实例变量初始化 
    基类静态静态成员变量初始化 
    基类实例变量初始化 
    基类构造方法调用 
    继承类构造方法调用。 
      

  4.   

    都是高手啊