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;
}
}