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 次瀏覽

開啟您的 職業

透過完成課程獲得認證

開始
廣告
© . All rights reserved.