2009-09-09 153 views
6

只是一個快速的:什麼是人們對公共類事件使用Action委託與定義自己的事件委託類型的想法?我知道許多使用Actions的「小」代表,比如在lamdas和.ForEach()擴展方法等中,但對於實際的類事件成員,使用Actions是一個好主意?什麼是這方面的「最佳做法」。C#:行動委託vs明確委託

感謝

+0

http://izlooite.blogspot.com/2011/02/delegates-vs-methods.html –

回答

11

相反的動作,我用EventHandler<TEventArgs>任何事件的聲明。它消除了我定義自己的委託類型的需要。它還具有強制從System.EventArgs派生數據類型的額外好處,因此可以很好地與.Net事件模式搭配使用。

+1

但它迫使你捲起TEventArgs的實現,即使你只是想返回一個值...已經說過了,[ScalarEventArgs where T:struct]就足夠了。 – Benjol

+0

是否符合.NET事件模型確實值得創建一個從System.EventArgs繼承的容器類?我真的因爲不遵守這個模型而失去了什麼? – MrLane

+3

可能發生的一件事是,如果您稍後需要返回一些有關事件的額外信息,則您只需將其添加到EventArgs類中即可。在這裏,如果你回來說說Action ,你總是必須返回一個字符串,不管怎麼說,如果你改變了它,它會破壞所有使用它的代碼。 –