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#中几种单例模式的主要内容,如果未能解决你的问题,请参考以下文章