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);
   }
}

更新時間:2020 年 6 月 21 日

822 次瀏覽

事業突飛猛進

完成課程,獲得認證

開始學習
廣告