我正在嘗試為代表訂閱在List<KeyValuePair<KeyEnum, Delegate>目標是將一系列處理程序與鍵盤鍵和命名軸相關(guān)聯(lián),兩者都由枚舉表示調(diào)度相當容易,我只是遍歷 KVP 列表,檢查一個條件,如果滿足條件,就簡單地調(diào)用委托,member.Value;我沒有遇到任何處理器時間效率問題,事實上,有發(fā)現(xiàn)它在堆棧上明顯更干凈。問題是在實例化后添加到代表。嘗試訪問它collection.FirstOrDefault(n=>n.Key == KeyEnum.W).Value+= SomeMethod不起作用,因為Value它是只讀的。有沒有一種方法不需要KeyValuePair每次都創(chuàng)建一個新的,或者比KeyValuePair一般情況下更好的解決方案
1 回答

冉冉說
TA貢獻1877條經(jīng)驗 獲得超1個贊
只需使用Dictionary<KeyEnum, Action>. 我不明白為什么您需要對 KVP 進行順序訪問。如果可以,您還應(yīng)該指定與事件處理程序?qū)?yīng)的委托類型。Action或EventHandler或Action<Something>取決于您的需要。
然后您可以輕松添加和調(diào)用委托:
// 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](...);
}
- 1 回答
- 0 關(guān)注
- 114 瀏覽
添加回答
舉報
0/150
提交
取消