EventArgs的一點變化

轉自:http://www.it165.net/pro/html/201308/6751.html

這只是一個很小的狀況,但爲了怕年紀大忘記就寫篇文記錄一下。

        在 .Net 2.0 時代出現的 EventHandler<TEventArgs> 委派中本來 TEventArgs 是有泛型約束,要求該泛型型別必須是 EventArgs 的衍生類別,在 2.0 ~ 4.0 時代這個委派的宣告是長這樣的 :

 

1.[SerializableAttribute]
2.public delegate void EventHandler<TEventArgs>(
3.Object sender,
4.TEventArgs e
5.)
6.where TEventArgs : EventArgs

        今天正好打開 Visual Studio 2012 要寫個宣告此委派的錯誤範例,於是我寫了以下的程序代碼 www.it165.net

 

1.public event EventHandler<int> TestEvent;

        在我按下建置的那一刻滿心期待出現『型別 'int' 不能做爲泛型型別或方法 'System.EventHandler<TEventArgs>' 中的型別參數 』這個錯誤訊息,結果居然編譯過了,當場傻眼。於是我就把 MSDN 文件庫打開來重新查一遍,發現在 .Net 4.5 的 EventHandler<TEventArgs> 委派宣告變成了 :

 

1.[SerializableAttribute]
2.public delegate void EventHandler<TEventArgs>(
3.Object sender,
4.TEventArgs e
5.)

        在 4.5 版把泛型別約束拿掉了,所以再也不需要強制一定得繼承 EventArgs 類別了,這只是個很小的狀況,寫個文留念一下。

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