我想从原始单例对象中取消分配内存,并使用另一种方法创建一个新内存。
public sealed class ObjectZ {
static readonly ObjectZ _instance = new ObjectZ();
private ObjectZ() {}
public static ObjectZ Instance{
get { return _instance; }
}
}
这种方法会是什么样的?
答案 0 :(得分:2)
单身人士通常会创建一次,并且在域的生命周期中存在,重新创建单身人士是狡猾的业务,根据定义,我提供的代码并不是真正的单身人士。
您似乎遵循的行为是可以无效的静态可访问的单个对象缓存。
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;
}
}
}
}