第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在字典中存儲代表

在字典中存儲代表

C#
Helenr 2022-10-23 15:09:23
我正在嘗試為代表訂閱在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](...);

}


查看完整回答
反對 回復 2022-10-23
  • 1 回答
  • 0 關(guān)注
  • 114 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號