C# 将许多方法连接到一个事件还是一个循环方法列表的方法更好?

C# 将许多方法连接到一个事件还是一个循环方法列表的方法更好?,c#,delegates,event-handling,C#,Delegates,Event Handling,我说的更好是指性能 我在构造器中有一堆这样的对象: someObject.Event += (o,e) => {(if e.Value == someValue) this.OnEvent();}; 我想根据这个问题的答案创建一个这样的类: class PassthroughRegistry { List<Action> _actions = new List<Action>(); object _someValue; public Pa

我说的更好是指性能

我在构造器中有一堆这样的对象:

someObject.Event += (o,e) => {(if e.Value == someValue) this.OnEvent();};
我想根据这个问题的答案创建一个这样的类:

class PassthroughRegistry
{
    List<Action> _actions = new List<Action>();
    object _someValue;

    public PassthroughRegistry(object someValue)
    {
        _someValue = someValue
    }

    public void Register(Action action)
    {
        _actions.Add(action);
    }

    public void OnEvent(object sender, EventArgs e)
    {
        if (e.SomeValue == _someValue)
             foreach (var action in actions)
                  action.Invoke();
    }
}
someObject本质上是由其他对象实例共享的单例


因此,基本上问题是-将大量单个代理连接到事件处理程序,还是将调用一组代理的代理连接起来更快?

他们基本上都在做相同的事情,或多或少。我相信注释似乎会告诉OP只需测量它。不可能对所有情况进行测量。重要的是要从更概念化的层面上理解这个问题,以便理解如何进行度量。这个问题是有道理的。如果你正在关注大量的事件,那么这可能是一个问题。否则,当事件被if短路时,为什么还要担心性能呢?我会把重点放在可读性上。@miliesmith你怎么知道性能对OP不重要?毕竟,他是在具体询问。@usr我会告诉OP不要测量它。我只想指出OP是为了避免重新发明方轮,避免在C语言中重新实现事件之类的事情上浪费时间。
class SomeObject
{
    PassthroughRegistry registry;
    SomeObject()
    {
        registry = new PassthroughRegistry("someValue");
        this.Event += registry.OnEvent;
    }
}