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}"); } } }
錯誤 - 可選引數必須出現在所有必需引數之後。
廣告