频道栏目
读书频道 > 软件开发 > C# > Visual C#2010开发权威指南
2.1.11 C# 4.0新特性 - 重载解析
2012-12-08 10:22:01     我来说两句
收藏   我要投稿

本文所属图书 > Visual C#2010开发权威指南

Visual Studio是微软公司推出的开发环境,是目前最流行的Windows平台应用程序开发环境。Visual Studio 2010版本于2010年4月12日面市,其集成开发环境(IDE)的界面被重新设计和组织,变得更加简单明了。Visual ...  立即去当当网订购

命名参数和可选参数影响了重载解析,但产生的变化相当简单。

如果所有的参数或者是可选的,或者在调用时(通过名字或位置)明确提供了对应的实参,并且实参能够转换为形参类型,则该签名是适用的。

转换的最优原则只用于明确给定的实参——出于最优的目的,忽略掉的可选参数在重载解析时将不做考虑。

如果两个签名一样好,则没有忽略可选参数的那个胜出:
M(string s, int i=1);
M(object o);
M(int i, string s="Hello");
M(int i);
M(5);

对于给定的这些重载,我们可以看看上述规则的工作方式。M(string, int)不是适用的,因为5不能转换为string。M(int, string)是适用的,因为它的第二个参数是可选的,然后很明显,M(object)和M(int)也是适用的。

M(int, string)和M(int)都比M(object)要好,因为将5转换为int优于将5转换为object。

最后,M(int)优于M(int, string),因为它没有被忽略的可选参数。

因此,最终调用的方法是M(int)。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.1.10 C# 4.0新特性 - 命名参数和可选参数
下一篇:2.1.12 C# 4.0新特性 - COM交互特性
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站