您的位置:首页 > 其它

单例

2015-12-14 09:35 183 查看
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
public class Singleton
{
/// <summary>
/// 构造函数必须是私有的,
///这样在外部便无法使用new来创建该类的实例
/// </summary>
private Singleton()//作用是因为定义了私有的构造函数,外界构造实例的时候,是通过构造函数来创建新对象实例的
{

}

/// <summary>
/// 定义一个素有的静态全局变量来保存该类的唯一实例
/// </summary>
private static Singleton singleton;

/// <summary>
/// 定义一个只读静态对象,
///且这个对象是在程序运行是创建的
/// </summary>
///
private static readonly object syncObject = new object();//作用是什么?
//这是一个锁,用于用相同的这个对象去锁住共同访问的内容

/// <summary>
/// 定义一个全局访问点
/// 设置为静态方法
/// 则在类的外部便无需实例化就可以使用该方法了
/// </summary>
/// <returns></returns>
public static Singleton GetInstance()
{
//这里保证只实例化一次
//即在第一次调用时实例化
//以后调用就不会再实例化
//第一重singleton==null
if (singleton == null)
{
lock (syncObject)
{
if(singleton==null)
{
singleton = new Singleton();
}
}
}
return singleton;

}

}

static void Main(string[] args)
{
Singleton sigle=Singleton.GetInstance();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: