2008-09-15 55 views
6

我發現自己偶爾會爲真正簡單的函數編寫委託(不帶任何參數並返回void),並且想知道是否有人知道已經編譯了.NET框架中已有的所有預定義委託的列表,以便可以重用他們?任何人都知道已經內置到框架中的代表列表?

要清楚我期待這樣的事情:

  • 無效System.AsyncCallback(System.IAsyncResult)
  • INT System.Comparison(T X,T Y)
  • 空洞體系。 IO.ErrorEventHandler(對象,System.Io.ErrorEventArgs)

如果沒有,聽起來像一個博客文章的好主意。

+0

嗨。如果你能讓問題標題更清楚,那會更好。這個問題並不清楚。 – 2008-09-15 19:38:47

+0

他正在討論所有預定義的代表,如Predicate ,這些代碼已經在框架內進行了編碼。 – 2008-09-15 19:40:31

回答

7

只需在(T)委託的msdn數據庫中查找即可。

在這裏,您有一個直接鏈接:List of delegates

應該讓你開始那。

3

我以前曾沿這些帖子發過帖子here。基本上,我描述瞭如何使用Reflector找到一個現有的委託來滿足您的需求。

1

只需使用行動,行動<牛逼>,行動< T1,T2,... >代表的方法不返回任何東西(無效),或Func鍵<TResult>,Func鍵< T,TResult >,Func鍵< T1 ,...,TResult >代表返回TResult的方法。

這些代表是.net 3.5中的新成員。

+0

動作存在於.NET 2.0中,但Action沒有。 – user169771 2015-05-14 13:50:58

2

要記住的一件事是,你編寫的代碼可供未來的編碼人員閱讀,包括你未來的自我。即使您可以在框架中找到具有正確簽名的內置委託,但使用該委託並不總是正確的,如果它掩蓋了代碼的用途。

半年的道路,利用型BondMaturationAction的代表的將是比一個有型的行動更加明確,即使簽名是相同的。

0

在.NET 2.0和更高版本,可以使用事件處理程序,如果你有沒有參數都和事件處理<牛逼>如果你想提供一些自定義的數據(你將需要獲得從EventArgs的一類,在它的附加數據)。如果您沒有要使用的EventArgs,則傳遞EventArgs.Empty。

因爲EventArgs是一個引用類型,所以EventHandler <T>的所有實例都使用相同的JITted代碼。

相關問題