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>各タイプのインスタンスは1つだけで、それを呼び出すときだけです。右?

ただメモリの問題を求めています。

4

2 に答える 2

2

タイプごとにDispatcherServiceのインスタンスは1つだけです。

はい。

そして私がそれを呼ぶときだけ。右?

はい。

コードは、CLRが使用する必要があるときに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);
    }
}
于 2011-03-11T13:39:29.467 に答える
1

DispatcherServiceクラスは自由にインスタンス化できるため、インスタンスはいくつでも持つことができます。インスタンスメソッドがないので意味がないのも別問題です。public static class DispatcherService<T>この例のように、インスタンス化することを意図していない場合は、に変更できます。

DispatcherService.Dispatcherまた、タイプごとに最大で1つのインスタンスがあります。これは、おそらく知りたいことです。DispatcherService特定のにアクセスしない場合T、そのリソースは割り当てられませんT

于 2011-03-11T13:39:26.350 に答える