C#中是否存在可用于创建单例类的ISingleton接口?
关于C#中单例模式的实现说明
C#标准类库以及主流第三方库中没有内置的ISingleton接口,你需要自行实现单例类,或者通过依赖注入容器来管理单例的生命周期。
为什么没有ISingleton接口?
单例模式的核心是控制类的实例创建逻辑,而接口仅用于定义行为契约,无法约束类的实例化规则。此外,不同场景下的单例需求差异很大(比如是否需要延迟初始化、是否要保证线程安全等),通用的ISingleton接口无法覆盖所有场景,因此官方并未提供这类接口。
几种常用的单例实现方式
饿汉式(静态初始化,天然线程安全)
类加载时就创建实例,适合实例占用资源少的场景:public sealed class Singleton { private static readonly Singleton _instance = new Singleton(); // 私有构造函数,阻止外部直接实例化 private Singleton() {} public static Singleton Instance => _instance; }懒汉式(延迟初始化,线程安全)
仅在首次访问时创建实例,适合实例占用资源多、不保证会被用到的场景:public sealed class Singleton { private static readonly Lazy<Singleton> _lazyInstance = new Lazy<Singleton>(() => new Singleton()); private Singleton() {} public static Singleton Instance => _lazyInstance.Value; }依赖注入管理(推荐在框架环境中使用)
如果你在ASP.NET Core等依赖注入环境中开发,无需手动编写单例类,只需在服务注册时指定单例生命周期:// 在Program.cs中注册服务 builder.Services.AddSingleton<IMyService, MyService>();之后通过构造函数注入
IMyService,DI容器会自动维护唯一实例,避免手动管理单例的复杂度。
内容的提问来源于stack exchange,提问作者Dominique
相关产品推荐
相关产品推荐

