回答
嗯......
Action<T> is almost the same as delegate void (T t)
and
Func<T> is almost the same as delegate T()
Action和Func鍵(lambda表達式和)只是 '語法糖' 和使用委託便利。
所以這只是一個偏好問題。
謝謝你分享 –
@amitkohan是的,_almost_相同。有一點需要注意的是'Action
這完全是一個偏好問題,但我認爲沒有理由永遠定義自己的委託,如果其中一個重載的Action或Func將工作。如果你有一個ref/out/params參數,可選參數或者其他一些邊緣情況,你別無選擇,只能自己定義。
其他:從.NET 4.0開始,'Action
雖然使用Action/Func的生活要容易得多,但自定義代表可以爲您提供更好的類型安全性(正確性)。最後還有一個折衷。另一個好處是更好(更有意義)的參數名稱和IDE的文檔支持。 – nawfal
- 1. 什麼時候應該使用接口List <>而不是Collection <>
- 2. 如何使用Delegate.CreateDelegate而不是Func <>來定義委託?
- 3. EGL_KHR_IMAGE < - 它是什麼,什麼時候應該使用它
- 4. 什麼時候應該使用AWS,什麼時候不使用
- 5. 什麼時候應該將視圖的委託設置爲零?
- 6. 什麼時候應該使用async/await,什麼時候不用?
- 7. 什麼時候應該使用INNER-LOOP-JOIN而不是INNER JOIN
- 8. 什麼時候應該使用susy-media而不是susy-breakpoint
- 9. 什麼時候應該使用double而不是小數?
- 10. 什麼時候應該使用UIImagePickerControllerSourceTypePhotoLibrary而不是UIImagePickerControllerSourceTypeSavedPhotosAlbum?
- 11. Python:什麼時候應該使用subprocess.Popen而不是os.popen?
- 12. 什麼時候應該使用ThreadLocal而不是Thread.SetData/Thread.GetData?
- 13. Python:什麼時候應該使用子類而不是方法?
- 14. 什麼時候應該使用fputs而不是fprintf?
- 15. 什麼時候應該使用字符串而不是stringstream?
- 16. 什麼時候應該使用宏而不是內聯函數?
- 17. 什麼時候應該使用的NSKeyedArchiver,而不是SQLite的?
- 18. 什麼時候應該使用angular.component而不是angular.directive?
- 19. Swift:我應該什麼時候使用「var」而不是「let」?
- 20. 什麼時候應該使用Task.Run()而不是等待?
- 21. 什麼時候應該使用Map而不是For循環?
- 22. 什麼時候應該使用UserControl而不是Page?
- 23. 什麼時候應該使用組件而不是指令?
- 24. 什麼時候應該使用ReBuild而不是Build?
- 25. 什麼時候應該使用reg而不是電線?
- 26. 什麼時候應該使用#ifdef而不是if()?
- 27. 什麼時候應該使用IBOutlet而不是IBAction?
- 28. 什麼時候應該使用OpenStruct而不是哈希?
- 29. 什麼時候應該使用Regex而不是String.IndexOf()?或String.Contains()?
- 30. 什麼時候應該使用HStoreField而不是JSONField?
Dupe:[創建委託手動vs使用動作func委託](http://stackoverflow.com/questions/4482613/creating-delegates-manually-vs-using-action-func-delegates ) – nawfal