在這種情況下,您可以使用c#創建一個事件集合,如列表,哈希集合和字典嗎?謝謝。事件詞典
Q
事件詞典
1
A
回答
5
當然可以的正確實例:
Dictionary<String, Delegate> m_events = new Dictionary<String, Delegate>();
在傑夫·裏希特的書CLR via C#你可以找到一個EventSet這樣類的完整實現。
(即使你沒有這本書,你可以從http://www.wintellect.com/Media/Default/Downloads/CLR_via_C_,_3rd_Edition_Code_by_Jeffrey_Richter_(January_20,_2010).zip下載示例代碼。有問題的類是在「Ch11-1-EventSet.cs」。)
至於問題去什麼事件是:
說你有這行代碼在你的類:
public event EventHandler<NewMailEventArgs> NewMail;
那麼C#編譯器將轉換線之上分爲三個結構:
私人代表字段。 (喜歡的東西:
private EventHandler<NewMailEventArgs> NewMail;
公共add_Xxx方法(其中xxx是事件的名稱),有興趣的用戶可以用它來註冊與事件的回調委託
公共remove_Xxx方法(其中xxx爲事件名稱)用戶可以使用從事件註銷。
(所有血淋淋的細節可以在上述書中11.2節找到。)
所以在其他禾rds你可以在你的Event集合類中存儲的'東西'只是一個普通的老式委託而已。
0
2
事件就像屬性或方法;你不能存儲它們的實例。你可以使用反射,但這可能不是你想要的。
你的意思是你想存儲一個方法列表,當你的事件被觸發時調用?事件已經做到了。
編輯:
嗯,我想我現在就買下。如果你只是簡單地解僱你的事件,那麼只有想要它的B實例才能得到它。如果傳入事件參數引發事件的A實例,那麼B實例將能夠告訴它來自哪裏。但是一個B永遠不會從一個沒有要求事件的A那裏得到一個事件。
編輯:
也許不是。你只想在B中的一個上發起一個事件?使B實現具有回調方法的接口。相反,觸發一個事件,調用方法上B.
相關問題
- 1. Clojure詞典詞典
- 2. Python條件字典詞典
- 3. 詞典的處理詞典
- 4. Python:詞典中的詞典?
- 5. Marklogic值詞典和單詞詞典
- 6. 字典詞典
- 7. 字典詞典
- 8. 名詞/形容詞/其他詞典或詞典(普通詞)
- 9. XML文件,字典,詞典嵌套
- 10. 創建csv文件詞典的字典
- 11. 牛津詞典的單詞表文件
- 12. 更改詞典詞典中的每個詞典的類型
- 13. 詞典
- 14. 詞典API(詞法)
- 15. Python3:文件中表格內容的詞典詞典
- 16. 從舊詞典獲取新的詞典與條件?
- 17. 讀FASTQ文件到詞典
- 18. 詞典通過XML文件
- 19. 在詞典理解條件
- 20. 從.txt文件到詞典
- 21. 文本文件詞典Java
- 22. 通過詞典詞典進行迭代
- 23. C#詞典到詞典自動翻譯
- 24. 使用LINQ到詞典的新詞典
- 25. 詞典和LINQ:過濾詞典列表
- 26. 計數詞典中的詞典數量
- 27. 詞典和混合詞典的區別
- 28. 結合詞典的兩個詞典(Python)
- 29. 轉換詞典的詞典串
- 30. 選擇詞典的詞典使用LINQ
通過事件,你的意思是CLI事件與處理程序? – Minustar 2012-01-06 13:47:50
你的用例是什麼? – BrokenGlass 2012-01-06 13:47:54
您可以將*代表*存儲在列表或字典中,當然 - 您的意思是?也許你可以舉一個更清楚的例子嗎? (注:授權情況下將無法反映變化 - 它們是不可變的副本) – 2012-01-06 13:48:20