假设我有这门课程:
public class DispatcherService<T>
{
private static Action<T> Dispatcher;
public static void SetDispatcher(Action<T> action)
{
Dispatcher = action;
}
public static void Dispatch(T obj)
{
Dispatcher.Invoke(obj);
}
}
让我直截了当地说......对于每种类型,我只有DispatcherService<T>
的一个实例,并且只有当我调用它时。正确?
只是要求记忆问题。
答案 0 :(得分:2)
我只有一个实例 每种类型的DispatcherService
是
只有在我打电话的时候。正确?
是
CLR在需要使用时会发出代码。
如果我在哪里,我会将其更改为单身。
public class DispatcherService<T>
{
private static readonly DispatcherService<T> _dispatcher = new DispatcherService<T>();
private Action<T> _action;
private DispatcherService() {}
public static DispatcherService<T> Dispatcher
{
get {return _dispatcher ;}
}
public void SetDispatcher(Action<T> action)
{
Dispatcher = action;
}
public void Dispatch(T obj)
{
Dispatcher.Invoke(obj);
}
}
答案 1 :(得分:1)
您可以拥有任意数量的DispatcherService
实例,因为该类可以自由实例化。另一个问题是没有意义,因为它没有实例方法。如果不打算实例化,可以将其更改为public static class DispatcherService<T>
,如本例所示。
每种类型最多只有一个DispatcherService.Dispatcher
个实例,这是您可能想知道的。如果您未针对特定DispatcherService
访问T
,则不会为T
分配任何资源。