A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵鹏程 中级黑马   /  2012-7-25 11:45  /  1704 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

对于重载方法可以使用可选参数跟命名参数,对于这两个有何区别跟用法?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

2 个回复

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

然后楼主根据需要列举优先级,在使用默认参数或者命名参数。个人理解几乎没有不同,根据需要列举优先级

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
命名参数就是调用方法时可以提供参数的名称来为其赋值,这样参数的位置就不在重要了。
例如:Test(name:"tom",age:18);也可以Test(age:18,name:"tom");
可选参数允许在定义时为某些参数赋值,在调用时可以忽略这些“可选的”参数
例如:定义方法void Test2(int a,int b=0).....调用时可以这样调用Test2(1);

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马