C#中几种单例模式

Posted nnyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中几种单例模式相关的知识,希望对你有一定的参考价值。

1.静态代码块

/// <summary>
    /// 静态代码块
    /// 仅在第一次调用类的任何成员时自动执行
    /// </summary>
    public class SingletonStatic
    
        private static readonly SingletonStatic _instance =null;
        static SingletonStatic()
        
            _instance = new SingletonStatic();
        
        private SingletonStatic()
        

        
        public static SingletonStatic Instance
        
            get  return _instance; 
        

    

2.内部类

   /// <summary>
    /// 内部类
    /// </summary>
    public class SingletonInner
    
        private SingletonInner()
        

        
        public static SingletonInner Instance
        
            get return InnerClass.inner; 
        
        private class InnerClass
        
            internal static readonly SingletonInner inner = new SingletonInner();
        
    

3.Lazy

    /// <summary>
    /// Lazy单例
    /// </summary>
    public class SingletonLazy
    
        private static readonly SingletonLazy _instance = new Lazy<SingletonLazy>().Value;
        private SingletonLazy()
        

        
        public SingletonLazy Instance
        
            get  return _instance; 
        

    

4.单例模式基类(转自https://www.cnblogs.com/zhouzl/archive/2019/04/11/10687909.html)

/// <summary>
    /// https://www.cnblogs.com/zhouzl/archive/2019/04/11/10687909.html
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public abstract class Singleton<T> where T : class
    
        // 这里采用实现5的方案,实际可采用上述任意一种方案
        class Nested
        
            // 创建模板类实例,参数2设为true表示支持私有构造函数
            internal static readonly T instance = Activator.CreateInstance(typeof(T), true) as T;
        
        private static T instance = null;
        public static T Instance  get  return Nested.instance;  
    
    class TestSingleton : Singleton<TestSingleton>
    
        // 将构造函数私有化,防止外部通过new创建
        private TestSingleton()  
    

 

以上是关于C#中几种单例模式的主要内容,如果未能解决你的问题,请参考以下文章

C#单例模式的实现和性能对比

几种单例模式实现方式及其优缺点分析

常见的几种单例模式

常见的几种单例模式

常见的几种单例模式

常见的几种单例模式