0

假设我有这个类:

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>每种类型只有一个实例,并且只有在我调用它时。正确的?

只是询问内存问题。

4

2 回答 2

2

对于每种类型,我只有一个 DispatcherService 实例

是的。

只有当我调用它时。正确的?

是的。

代码在需要使用时由 CLR 发出。


笔记

如果我在哪里,我会将其更改为singleton

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);
    }
}
于 2011-03-11T13:39:29.467 回答
1

您可以拥有任意数量的实例DispatcherService,因为该类可以自由实例化。这是另一回事,因为它没有实例方法,所以没有意义。public static class DispatcherService<T>如果它不打算被实例化,您可以将其更改为,如本例所示。

对于每种类型,您最多也有一个实例DispatcherService.Dispatcher,这可能是您想知道的。如果您不访问DispatcherService特定的T,则不会为此分配任何资源T

于 2011-03-11T13:39:26.350 回答