在面向對象語言中,方法重載 允許在同一類內定義多個名稱相同但參數列表不同的方法。參數列表不同指:參數個數不同、參數類型不同、或參數順序不同。
注意: 返回值類型不是重載的判斷依據。C# 禁止僅返回值不同的同名方法共存。
public void Show() // (1) 無參數
{
Console.WriteLine("Nothing");
}
public void Show(int number) // (2) 有一個 int 參數 → 與 (1) 構成重載
{
Console.WriteLine(number);
}
/* 編譯錯誤:僅返回值不同
public int Show(int number) // (3) 與 (2) 參數列表相同,返回值不同 → 不允許
{
Console.WriteLine(number);
return number % 5;
}
*/
void M(int a) 與 void M(ref int a) 是不同簽名。void M<T>(T t) 與 void M(int i) 可共存,調用時按類型推斷選擇。Console.WriteLine 多達 19 個重載)。Add(int), Add(int,int), Add(params int[]))。下一篇將探討涉及繼承關系參數(如 string vs object)時的重載解析細節。