豆豆首页 > 技术教程 > 程序设计 > .Net/C#

Visual C# 2005快速入门之运用作用域

http://tech.ddvip.com 2006年08月02日 19:23:15    
 
 

  重载方法

  如果两个标识符同名,而且在同一个作用域中声明,就可以说它们被重载(overloaded)。通常,重载的标识符属于一个程序bug,会在编译时被捕捉到并报错。例如,假定你在同一个方法中声明了两个同名的局部变量,就会获得一个编译时错误。类似地,假如在同一个类中声明了同名的两个字段,或者在同一个类中声明了两个完全一样的方法,就会获得一个编译时错误。这个事实表面上似乎不值一提,因为一切都会被报告为编译时错误。然而,你确实能通过一种方式来重载标识符,而且这种重载不仅是有用的,而且是重要的。

  以Console类中的WriteLine方法为例,前面已经使用该方法向屏幕输出一个字符串。然而,在“代码和文本编辑器”窗口中输入WriteLine时,会自动弹出一个“智能感知”列表,其中列出了19个不同的版本!WriteLine方法的每个版本都获取一套不同的参数。一个实现不获取任何参数,只是输出一个空行;另一个实现则获取一个bool参数,并输出它的值的字符串形式(true或false);还有一个实现获取一个小数值,并以字符串的形式输出它;等。程序编译时,编译器会检查所传递的实参的类型,然后调用参数集与之匹配的一个方法版本。下面是一个例子:

  static void Main()
{
  Console.WriteLine("The answer is ");
  Console.WriteLine(42);
}

  如果需要针对不同的数据类型执行相同的操作,重载就是一项十分有用的技术。如果不同的实现有不同的参数集,就可以考虑重载一个方法。换言之,每个版本都具有相同的方法名,但具有不同的参数数量或者不同的参数类型。利用这个功能,在调用一个方法时,可以提供一个以逗号分隔的实参列表,而编译器将根据这些实参的数量和类型,选择其中的一个匹配的重载版本。但要注意,虽然可以重载一个方法的参数,但不能重载方法的返回类型。也就是说,不能声明只是返回类型有区别的两个同名方法(编译器虽然比较聪明,但还不至于聪明到那种程度)。

[责任编辑:editorforddvip]

点击搜索更多"作用域"相关信息
正在加载评论...
请您留言
网友昵称: 匿名发表(无需注册)
 
请输入验证码:  
如果您还不是豆豆会员,欢迎注册
 
请您注意
· 遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。
· 豆豆网拥有管理笔名和留言的一切权利。
 
 
相关链接
本栏更新
专题文章推荐