黑马程序员技术交流社区

标题: 命名参数跟可选参数的用法跟区别 [打印本页]

作者: 赵鹏程    时间: 2012-7-25 11:45
标题: 命名参数跟可选参数的用法跟区别
对于重载方法可以使用可选参数跟命名参数,对于这两个有何区别跟用法?

作者: 徐阳    时间: 2012-7-25 12:11
在MSDN上列到
重载决策是一种编译时机制,用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。
使用命名实参和可选实参将在以下方面对重载决策产生影响:
如果方法、索引器或构造函数的各个形参均为可选,或者按名称或位置与调用语句中的单个实参对应,并且该实参可转换为形参的类型,则该方法、索引器或构造函数是执行的候选项。
如果找到多个候选项,则会将首选转换的重载决策规则应用于显式指定的实参。将忽略可选形参已省略的实参。
如果两个候选项不相上下,则会将没有可选形参的候选项作为首选项,对于这些可选形参,已在调用中为其省略了实参。这是具有较少形参的候选项的重载决策中一般首选项的结果。

然后楼主根据需要列举优先级,在使用默认参数或者命名参数。个人理解几乎没有不同,根据需要列举优先级
作者: 刘玉    时间: 2012-7-25 12:24
命名参数就是调用方法时可以提供参数的名称来为其赋值,这样参数的位置就不在重要了。
例如:Test(name:"tom",age:18);也可以Test(age:18,name:"tom");
可选参数允许在定义时为某些参数赋值,在调用时可以忽略这些“可选的”参数
例如:定义方法void Test2(int a,int b=0).....调用时可以这样调用Test2(1);




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2