欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

C#的单例模式实现

来源:本站整理 作者:佚名 时间:2017-09-17 TAG: 我要投稿

只可以生成一个例子的类是完成了Singleton(单例)形式的类。如下为C#完成单例形式的方法。
   
方法一只使用于单线程情况
    // 把结构函数设为公有函数以制止别人创立实例
    // 界说一个动态的实例在必要的时刻创立该实例
    // 在Singlrton的动态属性Instance中只要在instance为null的时刻才创立一个实例以防止
    // 反复创立
    // 把结构函数界说为公有函数
    public sealed class Singleton1
    {
        public int a = 2;
        private Singleton1() { }        private static Singleton1 instance = null;        public static Singleton1 Instance        {            get            {                if (instance == null)                    instance = new Singleton1();                return instance;            }        }    }     方法二固然在多线程情况中能事情但效力不高    
// 每次经由过程属性Instance获得Singleton2的实例都邑试图加上一个同步锁
    // 而加锁是一个异常耗时的操纵在没有必要的时刻应当只管即便防止
    public sealed class Singleton2
    {
        public int a = 2;
        private Singleton2(){}
        private static readonly object syncObj = new object();
        private static Singleton2 instance = null;
        public static Singleton2 Instance
        {
            get
            {
                lock (syncObj)
                {
                    if (instance == null)
                        instance = new Singleton2();
                }
                return instance;
            }
        }
    }
    可行的解法 加同步锁先后两次断定实例能否已存在       
// 只要instance为null即没有创立时必要加锁操纵。
    public sealed class Singleton3
    {
        private Singleton3() { }
        private static readonly Object syncObj = new Object();
        private static Singleton3 instance = null;
        public static Singleton3 Instance
        {
            get
            {
                if(instance == null)
                {
                    lock(syncObj)
                    {
                        if(instance == null)
                            instance = new Singleton3();
                    }

[1] [2] [3]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载