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.9 方法的重载 - 图1

图 8-13 Visual Studio的IntelliSense功能