Q
函數過載
5
A
回答
4
不,你不能。簽名沒有區別 - 參數名稱無關緊要。
通過指定訪問級別(如public或private),可選修飾符(如抽象或密封),返回值,方法名稱和任何方法參數,在類或結構中聲明方法。這些部分一起是方法的簽名。
像其他幾個答案都表示,考慮你正在服用的數據類型。名稱確實是一個典型的字符串,但年齡必須是?如果你允許它是 - 例如 - int
那麼你可以根據需要重載你的方法。
1
如果需要使用不同的意義的方法你爲什麼不創建一個不同的名稱的方法?在同一個對象上爲不同的事物使用相同的方法名稱會令人困惑。
3
不,您不能在返回類型或參數名稱上重載。與其他一些語言不同(最顯着的是,Objective C )參數名稱不是您函數簽名的一部分。
方法的簽名由方法的名稱,每個形式參數的類型和種類(值,引用或輸出)組成,按照從左到右的順序考慮。方法的簽名特別不包括返回類型,也不包括可能爲最右邊參數指定的參數修飾符。
甚至有它的不完全變成了選擇的部分參數名稱。
+0
+1,對Objective C – PeteH
2
1
你可以混合在一起使用可選參數和默認值這些方法:
public void test(string name = null, string age = null)
{
if (name != null)
{
// Do something
}
else if (age != null)
{
// Do something else
}
}
而你可以調用這個方法類似:
test(name: "John");
test(age: "30");
不是很乾淨,但仍然可用。
0
否 - 編譯器拋出一個錯誤,因爲編譯器使用參數來確定調用哪個方法,而不是返回類型。
0
NO。
安過載函數必須有不同的SIGNATURE。 即參數應該不同,無論是參數的數量還是不同數據類型參數的順序。
相關問題
- 1. node.js - 過載函數
- 2. 無參數函數過載
- 3. QSqlTableModel,數據函數過載
- 4. 通過函數指針重載函數
- 5. IEnumerable構造函數過載
- 6. 過載本地lambda函數
- 7. CLI/C++函數過載
- 8. JQuery函數過早加載
- 9. C++函數過載類
- 10. C++函數過載曖昧
- 11. 過載的指針重載函數
- 12. []不允許過載C++數組函數
- 13. 默認參數或函數過載
- 14. Haskell中內置函數的過載
- 15. 在Scala中模擬函數過載
- 16. 調用另一個函數過載
- 17. 「沒有過載函數的實例」
- 18. 過載函數和luabind的問題
- 19. 把函數來顯示加載過程
- 20. 函數過載,文檔幾乎相同
- 21. 函數過載如何工作
- 22. 調用靜態函數內部的基類過載函數?
- 23. 重載函數
- 24. 函數重載
- 25. 超載$()函數
- 26. 重載函數
- 27. 重載函數
- 28. 重載函數
- 29. 通過名稱參數和函數使用按值參數重載函數
- 30. 如何通過參數函數參數來重載函數切換
當然,如果您要將'age'表示爲['TimeSpan'](http://msdn.microsoft.com/zh-cn/library/system.timespan.aspx),這不會是問題。 – Rawling
@簡直就是,簡直就是任何形式的數字類型。 =) –
有一個共同的參數,比如'string args' –