none
关于静态嵌套类的加载问题。 RRS feed

  • 问题

  • 先看个含有静态嵌套类的类

        class Class1
        {
            public static string Name = "DefaultName";
    
            public Class1(string s)
            {
                Console.WriteLine(string.Format("从{0}初始化。", s));
            }
    
            private static class HolderClass
            {
                public static Class1 instance = new Class1("HolderClass");
            }
    
            public static Class1 getInstance()
            {
                Console.WriteLine("获得实例。");
                return HolderClass.instance;
            }
        }
    
        class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine(Class1.Name);
                Console.WriteLine("----------");
                Console.WriteLine(Class1.getInstance().ToString());
                Console.WriteLine("----------");
                Console.ReadLine();
            }
        }

    输出结果:

    DefaultName

    ----------

    从HolderClass初始化。

    获得实例。

    Test1.Class1

    ----------

    问题:

    从第一行来看,加载类时,静态嵌套类并未加载。

    从第二行来看,静态嵌套类在被调用时加载。

    问题是,为什么静态嵌套类的加载在“获得实例。”这句代码之前?

    2016年9月6日 7:06

答案