释放并重新实例化新的单例
本文关键字:单例 实例化 释放 | 更新日期: 2023-09-27 18:07:19
我想从原始的单例对象中取消内存分配,并使用另一个方法创建一个新对象。
public sealed class ObjectZ {
static readonly ObjectZ _instance = new ObjectZ();
private ObjectZ() {}
public static ObjectZ Instance{
get { return _instance; }
}
}
这个方法是什么样子的?
单例通常创建一次,并在域的生命周期内存在,重新创建单例是一件危险的事情,根据定义,我提供的代码并不是真正的单例。
你似乎是之后的行为是一个静态可访问的单对象缓存,可以无效。
public static class SingletonAccessor
{
private static SomeClass _instance;
private static object _lock = new Object();
public static SomeClass Singleton
{
get
{
lock (_lock)
{
if (_instance == null)
{
_instance = new SomeClass();
}
return _instance;
}
}
}
public static void Recycle()
{
lock (_lock)
{
if (_instance != null)
{
// Do any cleanup, perhaps call .Dispose if it's needed
_instance = null;
}
}
}
}