c# - C#中的事件数组?

标签 c# arrays events

基本上:

public delegate void RecvCommandHandler (ChatApplication sender, byte[] content);
event RecvCommandHandler[] commands = new RecvCommandHandler[255];

我想为每个命令编号激活不同的方法/功能,但我真的不确定语法。我应该怎么做?

我想我会为这个问题选择一组代表,但这个问题仍然很有趣。

最佳答案

您可以创建一个带有运算符重载的类数组来模拟您感兴趣的行为...

public delegate void EventDelegate(EventData kEvent);

public class EventElement
{
    protected event EventDelegate eventdelegate;

    public void Dispatch(EventData kEvent)
    {
        if (eventdelegate != null)
        {
            eventdelegate(kEvent);
        }
    }

    public static EventElement operator +(EventElement kElement, EventDelegate kDelegate)
    {
        kElement.eventdelegate += kDelegate;
        return kElement;
    }

    public static EventElement operator -(EventElement kElement, EventDelegate kDelegate)
    {
        kElement.eventdelegate -= kDelegate;
        return kElement;
    }
}

public EventElement[] commands = new EventElement[255];

commands[100] += OnWhatever;
commands[100].Dispatch(new EventData());
commands[100] -= OnWhatever;

关于c# - C#中的事件数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/987050/

相关文章:

c# - 尝试/捕获 Image.FromStream() 而不捕获 using 语句的其余部分?

c - 在 C 中实现堆栈数组

javascript - 在窗口单击事件中访问元素及其子/后代

c# - 如何为事件定义自定义事件参数?

c# - .Net - ProtocolType.IP、ProtocolType.IPv4 和 ProtocolType.IPv6 之间的区别

c# - 如何从 List<> C# 在 DataGridView 中添加按钮?

python - 去除 Python 中数组列表中的空数组和零数组

javascript - Object.keys 是否通过引用复制属性名称或创建新字符串?

c++ - C++ 和 Objective C 之间的事件处理

c# - 我应该如何监听从 ObjectContext 添加/删除的实体?