EventHandlerList 不支持 int 做索引

 

類似代碼(模擬):

 

   EventHandler<PointStateChangedEventArgs> h = me_opend2;
   System.ComponentModel.EventHandlerList es = new System.ComponentModel.EventHandlerList();
   es.AddHandler(1, h);
   Console.WriteLine(es[1].ToString()); //es[1] null


//正確
   EventHandler<PointStateChangedEventArgs> h = me_opend2;
   System.ComponentModel.EventHandlerList es = new System.ComponentModel.EventHandlerList();
   es.AddHandler("1", h);
   Console.WriteLine(es["1"].ToString());


 

其實定義很多事件造成所謂內存浪費我並不在乎,使用 EventHandlerList 是因爲有幾個類要定義一組同樣的事件,只是不想複製代碼。msdn示例用 object 做鍵,我按習慣定義了 enum,結果不行,轉 int 也不行,最後轉 string 就過了。

 

原因:沒找到資料,看到的介紹 索引器、hashtable 的文章,都沒有搜索 object 鍵時是否用 hashcode 條件。int 不論是 int.gethashcode 還是 object.gethashcode 都是一個值。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章