关于静态变量,静态构造函数,实例变量,构造函数的执行.

请看下面的代码,其实输入结果如下:

第一个输出和第二个输出都比较理解,第三个输出是为何(为什么所有静态变量和静态构造函数都没有执行)?

大家来讨论一下!

 

 

View Code
 static void Main(string[] args)
        {
                        Console.WriteLine("BaseA basea = new BaseA();");
            BaseA basea = new BaseA();
            basea.MyFun();
            Console.WriteLine();

            Console.WriteLine("BaseB baseb = new BaseB();");
            BaseB baseb = new BaseB();
            baseb.MyFun();
            Console.WriteLine();

            Console.WriteLine("BaseA basec = new BaseB();");
            BaseA basec = new BaseB();
            basec.MyFun();
            Console.WriteLine();
}


        public class BaseA
        {
            public static MyTest a1 = new MyTest("基类静态变量");
            public MyTest a2 = new MyTest("基类实例变量");
            static BaseA()
            {
                MyTest a3 = new MyTest("基类静态构造函数");
            }
            public BaseA()
            {
                MyTest a4 = new MyTest("基类实例构造函数");
            }
            public virtual void MyFun()
            {
                MyTest a5 = new MyTest("基类实例函数MyFun");
            }
        }
        public class BaseB : BaseA
        {
            public static MyTest b1 = new MyTest("派生静态变量");
            public MyTest b2 = new MyTest("派生实例变量");
            static BaseB()
            {
                MyTest b3 = new MyTest("派生静态构造函数");
            }
            public BaseB()
            {
                MyTest b4 = new MyTest("派生实例构造函数");
            }
            public new void MyFun()
            {
                MyTest b5 = new MyTest("派生实例函数MyFun");
            }
        }
        public class MyTest
        {
            public MyTest(string info)
            {
                Console.WriteLine(info);
            }
        }

 

 

posted @ 2011-11-03 10:09  taoliuhua  阅读(966)  评论(6)    收藏  举报