我正试图通过函数向事件添加侦听器。
event Action ExampleEvent;
void AddListener(Action emitter, Action receiver)
{
emitter += receiver;
}
然后在某个地方我这样称呼它:
AddListener(ExampleEvent, () => Console.WriteLine("Example event received"));
ExampleEvent?.Invoke();
但没有产出。我看不出少了什么。
您应该像这样使用ref
关键字。
event Action ExampleEvent;
void AddListener(ref Action emitter, Action receiver)
{
emitter += receiver;
}
// Usage
AddListener(ref ExampleEvent, () => Console.WriteLine("Example event received"));
ExampleEvent?.Invoke();
因为Action
实例就像指向函数的指针(或指针列表(,它们将作为参数按值传递。因此,为了通过引用传递它们,您需要使用ref
关键字。