C# 中的可选参数是什么?
csharpserver side programmingprogramming更新于 2025/10/2 9:52:17
默认情况下,方法的所有参数都是必需的。包含可选参数的方法在调用时不会强制传递参数。这意味着我们调用方法时无需传递参数。
可选参数在函数定义时包含默认值。如果我们在调用时未传递可选参数值,则将使用默认值。
有多种方法可以使参数可选。
使用默认值
示例
using System;
namespace DemoApplication{
class Demo{
static void Main(string[] args){
OptionalMethodWithDefaultValue(5);
// Value2 为可选,因此未传递
OptionalMethodWithDefaultValue(5, 10);
// Value2 已传递
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 传递了参数,则默认值将被覆盖。
使用可选属性
示例
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 为 {value1 + value2}");
}
}
}
输出
上述代码的输出为
Sum 为 5 Sum 为 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}");
}
}
}
Error − Optional Parameters must appear after all required parameters.

