[英]C# built-in events
閱讀下面的代碼后:
[SerializableAttribute]
public delegate void EventHandler<TEventArgs>
(
object sender,
TEventArgs e
)
為什么微軟的人不像發送者參數那樣為“e”參數提供對象類型? 我錯過了一些重要的東西嗎?
如果他們這樣做了,人們就會經常拋出args
參數。 關鍵是你可以做以下事情:
public event EventHandler<SomeInterestingEventArgs> SomeEvent;
和:
obj.SomeEvent += (sender, args) => Console.WriteLine(args.SomeSpecificProperty);
這是替換聲明需求的便捷方式:
public delegate void SomeInterestingEventHandler(
object sender, SomeInterestingEventArgs args);
沒有這個你就不得不這樣做。
您可以創建自己的事件args類,其中包含一些有用的屬性。 就像鼠標點擊事件args(不記得正確的名稱)有一個X和Y道具來告訴你點擊了什么點。 多虧了泛型,你不需要使用普通舊物體進行鑄造。 你有
MyEventHandler<MouseClickedEventArgs>(object sender, MouseClickedEventArgs e).
一切都是強類型的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.