日期:2014-05-17  浏览次数:20807 次

一道小题目,感觉很有趣,和大家分享下
在博客园里面看到的,转载过来,之前大家肯定都做过类似的,不过这次稍微再复杂点,废话不说,
上代码:

public class BaseA
{
    public static MyTest a1 = new MyTest("a1");
    public MyTest a2 = new MyTest("a2");
    static BaseA()
    {
        MyTest a3 = new MyTest("a3");
    }
    public BaseA()
    {
        MyTest a4 = new MyTest("a4");
    }
    public virtual void MyFun()
    {
        MyTest a5 = new MyTest("a5");
    }
}
public class BaseB : BaseA
{
    public static MyTest b1 = new MyTest("b1");
    public MyTest b2 = new MyTest("b2");
    static BaseB()
    {
        MyTest b3 = new MyTest("b3");
    }
    public BaseB()
    {
        MyTest b4 = new MyTest("b4");
    }
    public new void MyFun()
    {
        MyTest b5 = new MyTest("b5");
    }
}
static class Program
{
    static void Main()
    {
        BaseB baseb = new BaseB();
        baseb.MyFun();
    }
}
public class MyTest
{
    public MyTest(string info)
    {
        Console.WriteLine(info);
    }
}

写出结果~~
class 实例化

------解决方案--------------------
看完这个应该就明白了
http://www.cnblogs.com/qiuweiguo/archive/2011/06/29/2092916.html
------解决方案--------------------
而且这种面试题,个人感觉最好是直接copy运行一下,然后对照看一下会比直接看理论知识更容易明白
------解决方案--------------------
引用:
静态成员变量实例化->静态构造函数->非静态成员变量实例化->构造函数->基类静态成员变量实例化->基类静态构造函数->基类非静态成员变量实例化->基类构造函数->...

汗,调试发现不对
应是:
静态成员变量实例化->静态构造函数->非静态成员变量实例化->基类静态成员变量实例化->基类静态构造函数->基类非静态成员变量实例化->基类构造函数->构造函数->...[/
------解决方案--------------------
参见 http://blog.csdn.net/catchdream/article/details/8523825
------解决方案--------------------
看完这个应该就明白了
http://www.cnblogs.com/qiuweiguo/archive/2011/06/29/2092916.html
------解决方案--------------------
太复杂的结构完全没意义,等于是给别人埋地雷。
------解决方案--------------------