C# 中的可選引數是什麼?


預設情況下,方法的所有引數都是必需的。包含可選引數的方法在呼叫時不會強制傳遞引數。這意味著我們可以不傳遞引數就呼叫方法。

可選引數在函式定義中包含一個預設值。如果我們在呼叫時沒有傳遞可選引數的值,則使用預設值。

有不同的方法可以使引數成為可選的。

使用預設值

示例

 線上演示

using System;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
         //Value2 is not passed as it is optional
         OptionalMethodWithDefaultValue(5, 10);
         //Value2 is passed
         Console.ReadLine();
      }
      public static void OptionalMethodWithDefaultValue(int value1, int value2 = 5){
         Console.WriteLine($"Sum is {value1 + value2}");
      }
   }
}

輸出

以上程式碼的輸出為

Sum is 10
Sum is 15

在上面的示例中,方法 OptionalMethodWithDefaultValue(int value1, int value2 = 5) 中,value2 的預設值為 5。因此,如果在呼叫時沒有為 value2 傳遞引數,它將採用預設值 5;如果為 value2 傳遞了引數,則預設值將被覆蓋。

使用 Optional 屬性

示例

 線上演示

using System;
using System.Runtime.InteropServices;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
         OptionalMethodWithDefaultValue(5, 10);
         Console.ReadLine();
      }
      public static void OptionalMethodWithDefaultValue(int value1, [Optional]int value2){
         Console.WriteLine($"Sum is {value1 + value2}");
      }
   }
}

輸出

以上程式碼的輸出為

Sum is 5
Sum is 15

這裡使用 [Optional] 屬性來指定可選引數。

此外,需要注意的是,可選引數應該始終指定在引數的末尾。例如 - OptionalMethodWithDefaultValue(int value1 = 5, int value2) 將丟擲異常。

示例

using System;
namespace DemoApplication{
   class Demo{
      static void Main(string[] args){
         OptionalMethodWithDefaultValue(5);
         OptionalMethodWithDefaultValue(5, 10);
         Console.ReadLine();
      }
      public static void OptionalMethodWithDefaultValue(int value1 = 5, int value2){
         Console.WriteLine($"Sum is {value1 + value2}");
      }
   }
}

錯誤 - 可選引數必須出現在所有必需引數之後。

更新於: 2020-08-04

5K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告