簡體   English   中英

C#內置事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM