C# 构造函数有参数的,如何写成单例类
时间: 2024-11-12 08:35:43 浏览: 3
解析C#中的私有构造函数和静态构造函数
在C#中,构造函数带有参数的情况下创建单例模式需要一些技巧,因为通常来说,构造函数是用于初始化对象的,而单例模式强调的是只有一个实例。一种常见的做法是利用“饿汉式”加载或者“懒汉式”加载策略。
**饿汉式(静态字段初始化)**:
```csharp
public sealed class Singleton
{
private static readonly Singleton instance = new Singleton(); // 在类加载时就创建实例
private Singleton() { } // 私有化构造函数防止外部直接实例化
public static Singleton Instance => instance;
}
```
在这个例子中,`Singleton`类有一个静态的只读实例`instance`,构造函数是私有的,保证了整个程序只会有一个实例。
**懒汉式(延迟加载)**:
```csharp
public class Singleton
{
private static Singleton _instance;
private Singleton() { } // 私有化构造函数
public static Singleton Instance
{
get
{
if (_instance == null)
_instance = new Singleton();
return _instance;
}
}
}
```
这里,`_instance`被初始化为null,只有当第一次访问`Instance`属性时才创建实例。这种方式可以避免在应用程序开始时就创建实例带来的性能开销。
阅读全文