.net中变量的初始化顺序

关于.net中变量的初始化顺序的文章开过一些,不过看过就忘记了。还是自己钻研一下,印象比较深刻。

class Program
    
{
        
static void Main(string[] args)
        
{
            DriveB d
=new DriveB();
        }

    }


    
class BaseA
    
{
        
static DisplayClass a = new DisplayClass("基类静态成员初始化");

        DisplayClass BaseA_c 
= new DisplayClass("基类实例变量BaseA_c初始化");

        
public BaseA()
        
{
            Console.WriteLine(
"基类构造方法被调用");
        }

    }


    
class DriveB :BaseA
    
{

        
static DisplayClass DriveB_b = new DisplayClass("继承类静态成员DriveB_b初始化");

        
//static BaseA DriveB_a = new BaseA();

        DisplayClass DriveB_c 
= new DisplayClass("继承类实例变量DriveB_c初始化");

        
public DriveB()
        
{
            Console.WriteLine(
"继承类构造方法被调用");
        }

    }

    
class DisplayClass
    
{
        
public DisplayClass(string diplayString)
        
{
            Console.WriteLine(diplayString);
            Console.WriteLine();
        }

    }

看一下结果:

得出初始化顺序结论:
1)继承类静态成员变量初始化
2)继承类实例变量初始化
3)基类静态静态成员变量初始化
4)基类实例变量初始化
5)基类构造方法调用
6)继承类构造方法调用。

另外发现.net中变量的初始化和java似乎不同。
欢迎大家批评指正。

posted @ 2008-01-10 10:00  落叶潇潇雨  阅读(532)  评论(1编辑  收藏  举报