1

这是我的代码:

var messageHandlers = new Dictionary<Type, Action<T>>();

public static void Subscribe(Action<T> message)
{
    if (messageHandlers.ContainsKey(typeof(T)))
    {
        messageHandlers[typeof(T)] += message;
    }
    else
    {
        messageHandlers.Add(typeof(T), message);
    }
}

有什么办法可以使这成为一个单行列吗?

4

1 回答 1

4

你不能让它成为一个单线,但你可以让它更快:

Action<T> current;
messageHandlers.TryGetValue(typeof(T), out current);
messageHandlers[typeof(T)] = current + message;

索引器将Dictionary<>添加不存在的键。

如果切换到 a ConcurrentDictionary<>,则可以将其设为单线:

dict.AddOrUpdate(typeof(T), message, (key, current) => current + message);
于 2012-11-25T23:52:41.183 回答