8.9 方法的重载
首先说一下什么是方法重载。在C#这样的面向对象的高级语言中,允许我们在类中定义多个名称相同、签名(方法名、参数类型及个数、参数顺序及修饰符)不同的方法。需要注意的是,方法的返回值不属于签名的一部分。也就是说,决定方法是否构成重载有以下几个条件:
❑在同一个类中;
❑方法名相同;
❑方法签名不同。
下面,我们看一个方法重载的示例,见代码清单8-18:
代码清单8-18 方法重载
1 using System;
2 public class MethodSample
3{
4 public static void Main()
5{
6 MethodSample ms=new MethodSample();
7 ms.DoSomething(5);
8 ms.DoSomething(5,"10");
9 ms.DoSomething("10",5);
10}
11
12 public int DoSomething(int n)
13{
14 Console.WriteLine(“方法1”);
15 return 1;
16}
17
18 public void DoSomething(int n,string m)
19{
20 Console.WriteLine(“方法2”);
21}
22
23 public void DoSomething(string m,int n)
24{
25 Console.WriteLine(“方法3”);
26}
27}
如代码清单8-18所示,第11行和第16行就是两个DoSomething的重载方法,它们的参数个数不同,名称相同,这构成了重载的条件。
特别注意第2和第3个重载,它们的参数个数和类型均相同,但参数顺序不同,这同样构成了重载。当有多个重载方法可用的时候,Visual Studio的IntelliSense功能会进行提示,如图8-13所示:
图 8-13 Visual Studio的IntelliSense功能