将代表存储在字典中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将代表存储在字典中相关的知识,希望对你有一定的参考价值。

我试图让代表们参加在List<KeyValuePair<KeyEnum, Delegate>举行的活动

目标是将一系列处理程序与键盘键和命名轴相关联,这两个键都由枚举表示

调度相当容易,我只是遍历KVP列表,检查一个条件,如果条件满足,只需用member.Value;调用委托我没有遇到任何处理器时间效率问题,事实上,已经发现它在堆栈上显得更清晰。

问题是在实例化后添加到委托。尝试使用collection.FirstOrDefault(n=>n.Key == KeyEnum.W).Value+= SomeMethod访问它不起作用,因为Value是只读的。

有没有办法做到这一点,不需要每次创建一个新的KeyValuePair,或一般比KeyValuePair更好的解决方案

答案

只需使用Dictionary<KeyEnum, Action>。我不明白为什么你需要顺序访问KVP。如果可以,还应指定与事件处理程序对应的委托类型。根据您的需要,ActionEventHandlerAction<Something>

然后,您可以轻松添加和调用委托:

// adding delegates
if (dictionary.ContainsKey(KeyEnum.W)) {
    dictionary[KeyEnum.W] += SomeMethod;
} else {
    dictionary.Add(KeyEnum.W, SomeMethod);
}

// calling delegates
if (dictionary.ContainsKey(KeyEnum.W)) {
    dictionary[KeyEnum.W](...);
}

以上是关于将代表存储在字典中的主要内容,如果未能解决你的问题,请参考以下文章

将代表存储在字典中

第一次在AWS中代码运行缓慢

Qt C++ 项目中 Xamarin 项目中代码的可重用性

Yunxion资产监测设备技术中代码优化

Tutorial中代码的区别及不同效果

数组模拟链表