在VB.NET中,哪個更好用:函數重載還是默認參數?函數重載與VB.NET中的默認參數?
回答
代碼是否會被其他語言使用?如果是這樣,那麼平衡就會超負荷,同時還要銘記Hamish的回答。特別是,C#不支持可選參數 - 但...
無可否認,這實際上並不會阻止某人在C#中使用您的代碼,這可能會讓他們感到痛苦。
如果有很多參數並且它們在邏輯上表示某些內容,則可能需要考慮將它們封裝在一起,與Process
與ProcessStartInfo
一起使用的方式相同。由於對象初始值設定項,這對C#來說特別好。
如果這是用於構建,您可能還會將構建器模式視爲其變體。例如,在協議緩衝區我可以這樣做:
Person jon = new Person.Builder { Name="Jon", Age=32,
Spouse="Holly", Kids=3 }.Build();
這最終是非常具有可讀性,同時仍一氣呵成創建人(在一個表達,而不必變異的人本身 - 確實消息類型是不可變的;它只是不是的構建者)。
如果參數是可選的(即重載是整個過程簽名接受的參數的子集),那麼默認或可選參數會更有意義。
如果重載允許參數使用不同類型,或者語義上不同的參數會被例程以不同方式解釋,那麼重載會更有意義。
優秀答案 – baash05 2008-11-20 05:42:31
FYI
如果你想一個參數添加到一個是從其他組件調用,那麼函數或方法:
您可以通過附加功能與額外的參數超載。
或者您可以添加一個可選參數,但是:您必須重新編譯調用此函數的所有程序集,即使它們不需要使用新的可選參數!這通常不是人們所期望的(特別是那些用於VB6工作原理的)。基本上,你不能在一個新的可選參數中插入一個函數,並期望它完全向後兼容。此外,據我瞭解,如果您更改默認值是什麼,您需要重建所有調用程序集以使更改工作。
- 1. 重載方法中的默認參數
- 2. C++「重載」第二個默認函數參數
- 3. plot()函數默認參數
- 4. VB6中函數參數的默認值
- 5. 在默認參數上重載方法
- 6. 它可能把一個默認值函數的參數在VB.NET
- 7. C++重載ostream的不默認工作與空參數
- 8. JS:函數的參數的默認值
- 9. 函數參數的默認值?
- 10. 使用默認參數的Python函數
- 11. python函數的默認參數
- 12. T-SQL - 函數的默認參數
- 13. 問題與默認參數
- 14. python:defaultdict與非默認參數
- 15. 分配重載函數函數指針作爲默認值
- 16. 默認`const的載體<int>&id`參數函數
- 17. 有沒有辦法使用VB.NET中函數調用結果的默認參數?
- 18. 默認值爲vb.net中可選的類變量參數函數調用
- 19. Python類構造函數默認參數
- 20. 默認和參數化構造函數
- 21. PHP函數參數默認值
- 22. 使用默認參數傳遞函數
- 23. 默認參數函數簽名更改
- 24. 函數默認參數和標題
- 25. 函數默認參數提升
- 26. 定義默認值,函數參數
- 27. C++默認構造函數和默認參數
- 28. 引用參數與C++默認值的函數
- 29. 默認參數
- 30. 默認參數
重載的另一個「臨」是你可以看到每個超載有多少個引用。 Somenthing不能使用可選參數。 – Burnsys 2015-06-04 03:55:08