我們寫乙個類時,有時候會在同乙個類上新增很多事件,事件很多的話,是不容易管理的,.net提供的eventhandlerlist可以輔助多個事件的管理,但不方便的地方是,它不是型別安全的,缺少型別安全,多少用起來擔心會出錯。經過我的一番改造,可以將系統提供的eventhandlerlist通過泛型提供型別安全的管理。泛型類eventhandlerlist.cs的實現如下:
1public
sealed
class eventhandlerlist: idisposable 27
8public delegate this
[t key]914
set
19else22}
23}2425
public
void
addhandler(t key, delegate value)
2631
else 34
} 35
36public
void addhandlers(eventhandlerlistlisttoaddfrom) 37
43}4445
public
void
dispose() 46
4950
private
listentry find(t key) 51
57 found =found.m_next;
58}
59return
found; 60}
6162
public
void
removehandler(t key, delegate value) 63
68}6970
private
sealed
class
listentry
7182
} 83 }
有了它,我們就可以改變多個事件的使用方式,例子類似於下面這個。
1public
class
dispatchercore29
remove 12}
1314
public
event
eventhandler onrefreshdata
1519
remove22}
2324
private
void
raiseevent(eventtype eventtype, eventargs args)
2531
32//
其它邏輯,在適當的時候呼叫raiseevent
3334
private
enum
eventtype
3542 }
用起來更方便,很難出錯。希望對大家有用。
C C 的型別安全
什麼是型別安全?型別安全很大程度上可以等價於記憶體安全,型別安全的 不會試圖訪問自己沒被授權的記憶體區域。型別安全 常被用來形容程式語言,其根據在於該門程式語言是否提供保障型別安全的機制 有的時候也用 型別安全 形容某個程式,判別的標準在於該程式是否隱含型別錯誤。型別安全的程式語言與型別安全的程式之...
C C 的型別安全
型別安全的 不會檢視訪問沒被授權的記憶體區域。型別安全的程式語言指的是其提供保障型別安全的機制 型別安全的程式指的是該程式沒有隱含型別錯誤。1 c語言的型別安全 c語言只在區域性上下文中表現型別安全,例如試圖將一種型別的指標轉換成其他型別的指標時,編譯器會報錯,除非使用顯示型別轉換。例1 print...
C C 型別安全的
什麼是型別安全?型別安全很大程度上可以等價於記憶體安全,型別安全的 不會試圖訪問自己沒被授權的記憶體區域。型別安全 常被用來形容程式語言,其根據在於該門程式語言是否提供保障型別安全的機制 有的時候也用 型別安全 形容某個程式,判別的標準在於該程式是否隱含型別錯誤。型別安全的程式語言與型別安全的程式之...