先看个含有静态嵌套类的类
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
----------
问题:
从第一行来看,加载类时,静态嵌套类并未加载。
从第二行来看,静态嵌套类在被调用时加载。
问题是,为什么静态嵌套类的加载在“获得实例。”这句代码之前?