标签:pre object 情况 null style 标准 单例模式 generic 静态
1 using System;
2 using System.Collections.Generic;
3
4 namespace ConsoleApp1
5 {
6 class Singleton
7 {
8 private static Singleton _singleton = null;
9 private static object singleton_Lock = new object(); //对象锁
10
11 /// <summary>
12 /// 标准的单例模式
13 /// </summary>
14 /// <returns></returns>
15 public static Singleton CreateInstance()
16 {
17 if (_singleton == null)//保证对象初始化化之后的所有线程,不需要等待锁
18 {
19 lock (singleton_Lock)//保证只有一个线程进去判断
20 {
21 if (_singleton == null)//保证对象为空才创建
22 {
23 _singleton = new Singleton();
24 }
25 }
26 }
27 return _singleton;
28 }
29 }//Class_end
30 }
1 using System;
2 using System.Collections.Generic;
3
4 namespace ConsoleApp1
5 {
6 class Singleton
7 {
8 private static Singleton _Singleton = null;
9
10 /// <summary>
11 /// 静态构造函数:由CLR保证,在第一次调用之前调用,只调用一次
12 /// </summary>
13 static Singleton()
14 {
15 _Singleton = new Singleton();
16 }
17
18 public static Singleton CreateInstance()
19 {
20 return _Singleton;
21 }
22 }//Class_end
23 }
1 using System;
2 using System.Collections.Generic;
3
4 namespace ConsoleApp1
5 {
6 class Singleton
7 {
8 //静态变量会在类型第一次使用的时候初始化,而且只初始化一次
9 private static Singleton _singleton = new Singleton();
10 public static Singleton CreateInstance()
11 {
12 return _singleton;
13 }
14 }//class_end
15 }
标签:pre object 情况 null style 标准 单例模式 generic 静态
原文地址:http://www.cnblogs.com/BigDong/p/8007440.html