C# 中的delegate、event、Action、Func


緣起:

  之前一直很糾結C#中(delegate、event、Action、Func)的用法,這么多方法,感覺每次使用的時候好像都沒啥區別,老感覺微軟有多此一舉之嫌,不過今天花了點時間好好研究了下,才發現他們實質上的區別。

 

解惑:

  我發現,這四種類型中不管哪種,其實都屬於委托,只是展現的形式不同而已,無論哪種,其實都可以采用delegate實現,為什么會衍生出其他三種形式,我猜是為了方便開發者使用,因為我們會發現定義一個delegate其實還是蠻費勁的,至少會比其他三種多一條定義語句,使用起來也不方便,強迫症的我難以接受。

  另外,delegate是很寬泛的,格式內容都不受限,俗話說沒有規矩不成方圓,如果一人過於隨意,那么他所做的事也規范不到哪去,這就會導致后期的維護很費勁,因此,建議用后面三種。

 

區別:

  delegate:需要預先使用delegate關鍵詞定義好委托對象才能使用,參數任意、返回值任意

  event:無需定義委托,直接使用event關鍵詞來定義好即可,參數限定為兩個,第一個object類型的sender(一般傳事件源),第二個繼承EventArgs的泛型參數(事件參數),返回值任意

  Action:無需任何定義,直接把它當做一種類型來使用即可,一般作為方法參數,進行回調操作,例如導入進度回調通知,只有一個泛型參數,無返回值。

  Func:無需任何定義,和Action類似,只是它具有返回值

 

結語:

  以上為個人理解,對於初學者具有一定參考價值,想要深入請官網看文檔。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM