亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在字典中存儲代表

在字典中存儲代表

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

1 回答

?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

只需使用Dictionary<KeyEnum, Action>. 我不明白為什么您需要對 KVP 進行順序訪問。如果可以,您還應該指定與事件處理程序對應的委托類型。Action或EventHandler或Action<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](...);

}


查看完整回答
反對 回復 2022-10-23
  • 1 回答
  • 0 關注
  • 105 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號