首先我們說一下什麼是方法重載。在面對對象這樣的高級語言中都允許我們在一個類中定 義多個方法名相同、方法間參數個數和參數順序不同的方法,對於參數個數不同或者參數列 表不同的情況我們稱之為參數列表不同。需要注意的是這裡沒有提到方法的返回值。也就是 決定方法是否構成重載有兩個條件:
(1)在同一個類中;
(2)方法名相同;
(3)參數列表不同。
例如下面的代碼:
public void Show()// (1)
{
Console.WriteLine("Nothing");
}
public void Show(int number)//(2)
{
Console.WriteLine(number);
}
/*
public int Show(int number)//(3)
{
Console.WriteLine(number);
return number % 5;
}
*/
對於上面的代碼,(1)沒有參數,(2)使用了一個int類型的參 數,(1)和(2)之間就構成了重載。(2)與(3)相比僅僅返回值不同,雖然重載不關心返回值的 不同,但是在C#中不允許存在方法名和參數列表相同、返回值不同的方法,所以(2)和(3) 不能同時存在於代碼中,(3)如果不注釋掉上面的代碼是沒有辦法通過編譯的。
上面 我們僅僅討論了重載的一些基本常識,下面我們探討一下一些情況稍微復雜的重載情況。