我應該何時使用方法重載進行實時開發,請提供一些鏈接。什麼時候應該實時使用方法重載項目?
回答
當多個方法具有相同的目的,但有多種方法啓動時,使用重載(推薦)。
所以我們寧願
int Add(int a, int b) { ...}
int Add(int a, int b, int c) { ... }
比
int Add2(int a, int b) { ...}
int Add3(int a, int b, int c) { ... }
或
int Add(int a, int b, int? c) { ...}
最後一個例子也可以用做(C#4)可選參數。
另一個很好的候選人超載:
void ReadXml(string fileName) { ... }
void ReadXml(Stream strm) { .... }
方法重載是一種用於類設計的OOP技術。它與實時開發無關。
如果您問的是現實世界中使用方法重載 - 這是一種有用的技術,您可以看到它在整個BCL中都被使用。
示例是一些Linq擴展方法,其中許多擴展方法有多個過載(請參閱IEnumerable<T>
)。
根據參數(例如排序),可以通過幾種不同方式完成同一操作時,最好使用方法重載。不帶參數的重載可能會應用默認排序。帶有排序順序的重載將允許排序,而另一個排序可能會有一個確定排序算法的Func
委託。
稍微有點靈活性,我把它當作「現實生活」項目。 – 2010-07-04 08:15:32
@亨克霍爾特曼 - 夠公平的......我想我看到了「實時」,並立即想到了RT編程。 – Oded 2010-07-04 08:19:04
現在好吧,像初始化和命名參數在c#中的東西,它似乎並不是必要的。
我想補充一點,如果你正在創建一個公共API,並且你想要真正鎖定事物的使用方式,那麼我認爲這會更有用。 – spinon 2010-07-04 07:46:55
方法重載可能有用的一種情況是如果你正在構建一些公共API。例如,ASP.NET MVC使用它通過HTML幫助程序提供功能,您可以在其中使用不同參數多次重載同一方法。
- 1. 什麼時候應該使用方法重載vs不同命名方法
- 2. 什麼時候應該使用AWS,什麼時候不使用
- 3. 什麼時候應該使用sed,什麼時候應該使用awk
- 4. 什麼時候應該使用memcpy,什麼時候應該使用memmove?
- 5. 什麼時候應該使用Import-Package,什麼時候應該使用Require-Bundle?
- 6. 什麼時候應該使用async/await,什麼時候不用?
- 7. 什麼時候應該使用模板和重載函數?
- 8. 什麼時候應該使用非成員運算符重載?
- 9. 什麼時候應該使用Class方法而不是init實例方法?
- 10. 什麼時候應該在我的asp.net項目中使用wcf?
- 11. 什麼時候應該使用datagrid,何時應該使用datagridview?
- 12. 什麼時候應該使用$(object),何時應該使用$ object?
- 13. 什麼時候應該重寫java.lang.Object方法?
- 14. 我什麼時候應該重寫等方法在Java中
- 15. 什麼時候應該重寫toString()?
- 16. 什麼時候應該使用「performBlock」方法?
- 17. Python:什麼時候應該使用子類而不是方法?
- 18. 什麼時候應該使用Moq的.As方法?
- 19. 什麼時候應該使用靜態方法?
- 20. 什麼時候應該使用方法來返回值?
- 21. 什麼時候應該使用HtmlHelper擴展方法?
- 22. 什麼時候應該使用Lambda或Anonymous方法?
- 23. 什麼時候應該使用公共靜態方法
- 24. 什麼時候應該使用EntityManger分離方法?
- 25. 什麼時候應該使用FSharpFunc.Adapt?
- 26. 什麼時候應該使用_aligned_malloc()?
- 27. 什麼時候應該使用`use`?
- 28. 什麼時候應該使用$ rootScope?
- 29. 什麼時候應該使用$(document).ready?
- 30. 什麼時候應該使用html5 sessionStorage?
@Closers,我無法找到一個副本。這是一個真正的問題。 – 2010-07-04 08:10:40
當你說「實時」是暗示「真實生活」,正如Henk下面提到的,或者你正在研究性能至關重要的實時軟件應用程序?我懷疑亨克是正確的,但如果我們能夠幫助消除問題的答案,那麼答案可能會更合適,當然也會對其他有類似問題的人有幫助。 – 2010-07-04 08:21:27
@亨克因爲包含「實時」一詞而很難說出什麼是被問到的 - 它已經吸引了關於實時編程的答案,並且這個問題在那個領域是沒有意義的。如果不恰當地使用「實時」,最好再次提出問題。 – 2010-07-04 09:23:26