C# 中的方法過載和歧義
利用方法過載,你可以在同一作用域內為同一函式名稱設定多個定義。函式的定義必須透過引數列表中的型別和/或引數個數相互區別開來。
讓我們來看個例子。在此,呼叫將轉到具有單個引數的方法 −
示例
using System; class Student { static void DisplayMarks(int marks1 = 90) { Console.WriteLine("Method with one parameter!"); } static void DisplayMarks(int marks1, int marks2 = 95) { Console.WriteLine("Method with two parameters!"); } static void Main() { DisplayMarks(97); } }
現在讓我們看看將產生模稜兩可的呼叫的是什麼。這裡的混淆之處在於,第二個方法將需要兩個引數作為預設值,而第一個方法需要將一個引數預設。這產生了歧義。
示例
using System; class Student { static void DisplayMarks(int marks1 = 90, int marks2 = 80) { Console.WriteLine("Method with two parameters!"); } static void DisplayMarks(int marks1, int marks2 = 80, marks3 = 98) { Console.WriteLine("Method with three parameters!"); } static void Main() { DisplayMarks(80); } }
廣告