在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. 函數重載與C++中的默認參數
- 2. 重載方法中的默認參數
- 3. 默認參數或函數過載
- 4. 默認的構造函數重載
- 5. plot()函數默認參數
- 6. C++重載一個函數默認參數
- 7. C++「重載」第二個默認函數參數
- 8. VB6中函數參數的默認值
- 9. 虛函數中的默認參數C++
- 10. curried函數中的默認參數
- 11. 它可能把一個默認值函數的參數在VB.NET
- 12. C++重載ostream的不默認工作與空參數
- 13. 模塊中的重複函數和更改默認參數
- 14. 如何在算法中使用帶默認參數的重載函數?
- 15. JS:函數的參數的默認值
- 16. 默認的構造函數的參數
- 17. PHP默認參數的函數調用
- 18. C++函數默認參數的位置
- 19. T-SQL - 函數的默認參數
- 20. 模板函數的默認參數
- 21. python函數的默認參數
- 22. 函數參數的默認值?
- 23. 接受默認參數的C函數
- 24. 使用默認參數的Python函數
- 25. 問題與默認參數
- 26. python:defaultdict與非默認參數
- 27. 分配重載函數函數指針作爲默認值
- 28. 使用默認參數的C++函數的多重聲明
- 29. 默認`const的載體<int>&id`參數函數
- 30. 有沒有辦法使用VB.NET中函數調用結果的默認參數?
重載的另一個「臨」是你可以看到每個超載有多少個引用。 Somenthing不能使用可選參數。 – Burnsys 2015-06-04 03:55:08