无意中发现的C#延迟加载
时间:2011-03-11 来源:信封牛
今天在看设计模式的单例模式时,无意中发现了C#的延迟加载实现方式。我就把我见到的现象和大家分享下,有错误欢迎拍砖。
public sealed class b
{
internal static int a = 0;
static b()
{
a = 4;
}
}
public sealed class Singleton
{
internal static int i = 0;
Singleton()
{
}
public static Singleton Instance
{
get
{
return Nested.instance;
}
}
class Nested
{
static Nested()
{
}
internal static readonly Singleton instance = new Singleton();
}
}
以上两个类,当你运行程序的时候你会发现,当你不去调用b这个类,b类中的a不会被初始化,而Singleton这个类就不一样了,无论你是否调用还是不调用都会进行初始化的,这两者区别其实只有一点,那就是构造方法一个是static,一个没有,所以我得出的结论是带static的会被延迟初始化。