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' –